In shell scripts, when do we use {}
when expanding variables?
For example, I have seen the following:
var=10 # Declare variable
echo "${var}" # One use of the variable
echo "$var" # Another use of the variable
Is there a significant difference, or is it just style? Is one preferred over the other?
Best Answer
In this particular example, it makes no difference. However, the
{}
in${}
are useful if you want to expand the variablefoo
in the stringsince
"$foobar"
would instead expand the variable identified byfoobar
.Curly braces are also unconditionally required when:
${array[42]}
${filename%.*}
(remove extension)"$8 $9 ${10} ${11}"
Doing this everywhere, instead of just in potentially ambiguous cases, can be considered good programming practice. This is both for consistency and to avoid surprises like
$foo_$bar.jpg
, where it's not visually obvious that the underscore becomes part of the variable name.