From 7234f6235c6ed05907fd1cb754eb73c78d26c40a Mon Sep 17 00:00:00 2001 From: Michael Diamond Date: Thu, 11 Mar 2021 09:55:33 -0800 Subject: [PATCH] Use ${braces} with variables in longer strings --- SC2086.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SC2086.md b/SC2086.md index d1650e4..7f59d84 100644 --- a/SC2086.md +++ b/SC2086.md @@ -27,16 +27,16 @@ Strictly speaking, only expansions themselves need to be quoted, but for stylist ```sh $HOME/$dir/dist/bin/$file # Unquoted (bad) "$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: ```sh -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 $(but this ${variable} is not)" +echo "This ${variable} is quoted $(and now this "$variable" is too)" ``` ### Exceptions