mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Created SC2182 (markdown)
37
SC2182.md
Normal file
37
SC2182.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
## This printf format string has no variables. Other arguments are ignored.
|
||||||
|
|
||||||
|
### Problematic code:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
place="world"
|
||||||
|
printf hello $place
|
||||||
|
```
|
||||||
|
|
||||||
|
### Correct code:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
place="world"
|
||||||
|
printf "hello %s\n" "$place"
|
||||||
|
```
|
||||||
|
### Rationale:
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
### Exceptions:
|
||||||
|
|
||||||
|
None.
|
Reference in New Issue
Block a user