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