У меня есть переменная с именем filepath=/tmp/name
.
Я знаю, что могу сделать это, чтобы получить доступ к переменной: $filepath
В моем сценарии оболочки я попытался сделать что-то вроде этого (обратные кавычки предназначены)
`tail -1 $filepath_newstap.sh`
Эта строка не работает, черт возьми !, потому что переменная не вызывается $filepath_newstap.sh
Как добавить _newstap.sh
к имени переменной?
Обратите внимание, что обратные кавычки предназначены для оценки выражения.
set -u
что вызывает прерывание скрипта, если вы ссылаетесь на неопределенную переменную.${}
и двойными кавычками? Должен ли я предпочесть одно другому?Используйте фигурные скобки вокруг имени переменной:
источник
$filepath_newstap.sh
интерпретируется${filepath_newstap}.sh
скорее как предполагаемая${filepath}_newstap.sh
, что решит проблему."$filepath"_foo
и${filepath}_foo
оба будут расширяться до/tmp/name_foo
. Однако'$filepath'_foo
,"$"filepath_foo
и$"filepath"_foo
будет все расширения полностью избежать. Вот почемуexport PATH=$PATH:$addpath
работает над добавлением:$addpath
(которое может быть расширено параметром) вPATH
переменную среды.В Баше:
источник