Вьющиеся фигурные скобки всегда необходимы для доступа к элементам массива и выполнения расширения фигурных скобок.
Хорошо быть не слишком осторожным и использовать его {}
для расширения переменных оболочки, даже если нет места для двусмысленности.
Например:
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
Видеть:
{}
известен как расширение скобки .${}
известен как расширение переменной. Они делают разные вещи. Я бы поддержал вас, за исключением бита без расширения.