mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Use ${braces} with variables in longer strings
@@ -27,16 +27,16 @@ Strictly speaking, only expansions themselves need to be quoted, but for stylist
|
|||||||
```sh
|
```sh
|
||||||
$HOME/$dir/dist/bin/$file # Unquoted (bad)
|
$HOME/$dir/dist/bin/$file # Unquoted (bad)
|
||||||
"$HOME"/"$dir"/dist/bin/"$file" # Minimal quoting (good)
|
"$HOME"/"$dir"/dist/bin/"$file" # Minimal quoting (good)
|
||||||
"$HOME/$dir/dist/bin/$file" # Canonical quoting (good)
|
"${HOME}/${dir}/dist/bin/${file}" # Canonical quoting (good)
|
||||||
```
|
```
|
||||||
|
|
||||||
When quoting composite arguments, make sure to exclude globs and brace expansions, which lose their special meaning in double quotes: `"$HOME/$dir/src/*.c"` will not expand, but `"$HOME/$dir/src"/*.c` will.
|
When quoting composite arguments, make sure to exclude globs and brace expansions, which lose their special meaning in double quotes: `"${HOME}/${dir}/src/*.c"` will not expand, but `"${HOME}/${dir}/src"/*.c` will.
|
||||||
|
|
||||||
Note that `$( )` starts a new context, and variables in it have to be quoted independently:
|
Note that `$( )` starts a new context, and variables in it have to be quoted independently:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
echo "This $variable is quoted $(but this $variable is not)"
|
echo "This ${variable} is quoted $(but this ${variable} is not)"
|
||||||
echo "This $variable is quoted $(and now this "$variable" is too)"
|
echo "This ${variable} is quoted $(and now this "$variable" is too)"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Exceptions
|
### Exceptions
|
||||||
|
Reference in New Issue
Block a user