Вьющиеся фигурные скобки всегда необходимы для доступа к элементам массива и выполнения расширения фигурных скобок.
Хорошо не проявлять чрезмерную осторожность и использовать {}
для расширения переменных оболочки, даже если нет места для неоднозначности.
Например:
dir=log
prog=foo
path=/var/${dir}/${prog} # excessive use of {}, not needed since / can't be a part of a shell variable name
logfile=${path}/${prog}.log # same as above, . can't be a part of a shell variable name
path_copy=${path} # {} is totally unnecessary
archive=${logfile}_arch # {} is needed since _ can be a part of shell variable name
Итак, лучше написать три строки следующим образом:
path=/var/$dir/$prog
logfile=$path/$prog.log
path_copy=$path
, что определенно более читабельно.
Поскольку имя переменной не может начинаться с цифры, оболочке не требуется {}
вокруг пронумерованных переменных (например, $1
, $2
и т. Д.), Если за таким расширением не следует цифра.Это слишком тонко, и это делает явным использование {}
в таких контекстах:
set app # set $1 to app
fruit=$1le # sets fruit to apple, but confusing
fruit=${1}le # sets fruit to apple, makes the intention clear
См .: