printf
format string. Use
printf "..%s.." "$foo"
.printf "Hello, $NAME\n"
printf "Hello, %s\n" "$NAME"
printf
interprets escape sequences and format specifiers
in the format string. If variables are included, any escape sequences or
format specifiers in the data will be interpreted too, when you most
likely wanted to treat it as data. Example:
coverage='96%'
printf "Unit test coverage: %s\n" "$coverage"
printf "Unit test coverage: $coverage\n"
The first printf writes Unit test coverage: 96%
.
The second writes
bash: printf: `\': invalid format character
Sometimes you may actually want to interpret data as a format string, like in:
octToAscii() { printf "\\$1"; }
octToAscii 130
In this case, use the %b
format specifier that expands
escape sequences without interpreting other format specifiers:
octToAscii() { printf '%b' "\0$1"; }
octToAscii 130
Sometimes you might have a pattern in a variable:
filepattern="file-%d.jpg"
printf -v filename "$filepattern" "$number"
This has no good rewrite. Please ignore the warning with a directive.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.