Подтвердить что ты не робот

Переменная интерполяция в оболочке

Это, вероятно, очень простой вопрос, но по какой-то причине я, похоже, выгляжу очевидным.

У меня есть переменная с именем filepath=/tmp/name

Чтобы получить доступ к переменной, я знаю, что я могу это сделать $filepath

В моей оболочке script я попытался сделать что-то вроде этого (обратные тики предназначены)

`tail -1 $filepath_newstap.sh`

Эта линия терпит неудачу, духу! потому что переменная не называется $filepath_newstap.sh

Как добавить _newstap.sh к имени переменной? Обратите внимание, что обратные тики предназначены для оценки выражения

4b9b3361

Ответ 1

Использование

"$filepath"_newstap.sh

или

${filepath}_newstap.sh

или

$filepath\_newstap.sh

_ является допустимым символом в идентификаторах. Dot нет, поэтому оболочка попыталась интерполировать $filepath_newstap.

Вы можете использовать set -u, чтобы сделать вывод оболочки с ошибкой, когда вы ссылаетесь на переменную undefined.

Ответ 2

Используйте фигурные скобки вокруг имени переменной:

`tail -1 ${filepath}_newstap.sh`

Ответ 3

В bash:     tail -1 ${filepath}_newstap.sh