place="world"
printf hello $place
place="world"
printf "hello %s\n" "$place"
ShellCheck has noticed that you're using a printf
with
multiple arguments, but where the first argument has no %s
or equivalent variable placeholders.
echo
accepts zero or more strings to write, e.g.
echo hello world
.
printf
instead accepts one pattern/template with zero or
more %s
-style placeholders, and one argument for each
placeholder.
Rewrite your command using the right semantics, otherwise all arguments after the first one will be ignored:
$ printf hello world\\n
hello
$ printf "hello world\n"
hello world
$ printf "hello %s\n" "world"
hello world
If you wanted a no-op, use :
instead.
: ${place=world}
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.