1
0
mirror of https://github.com/koalaman/shellcheck.git synced 2025-03-12 12:35:25 -07:00

Minor grammar fixes

Abubakar Nur Khalil 2021-08-21 10:06:35 +01:00
parent 091fd0244a
commit 7d0541c880

@ -16,7 +16,7 @@ find . -name '*.mp3' -exec sh -c 'i="$1"; sox "$i" "${i%.mp3}.wav"' shell {} \;
In the problematic example, the filename is passed by injecting it into a shell string. Any shell metacharacters in the filename will be interpreted as part of the script, and not as part of the filename. This can break the script and allow arbitrary code execution exploits.
In the correct example, the filename is passed as a parameter. It will be safely treated as literal text. Note that when using shell command with `-c`, the first parameter to the shell command (in the example "shell") becomes `$0` in the shell command's environment, where it is used e.g. in shell error messages (you can set it to an arbitrary value, but it makes sense to set it to the shell's name). You should not use the first parameter to the shell command as data processing parameter, because you could not access `$0` e.g. via `$*` in the shell command (because `$*` starts with `$1`), and as said, `$0` is used in the shell command's error messages, what would be confusing.
In the correct example, the filename is passed as a parameter. It will be safely treated as literal text. Note that when using the shell command with `-c`, the first parameter to the shell command (in the example "shell") becomes `$0` in the shell command's environment, where it is used e.g. in shell error messages (you can set it to an arbitrary value, but it makes sense to set it to the shell's name). You should not use the first parameter to the shell command as a data processing parameter because you cannot, for example, access $0 via $* in the shell command (because $* starts with $1), and as previously mentioned, $0 is used in the shell command's error messages, which would be confusing.
### Exceptions: