web-dev-qa-db-fra.com

interpolation variable en shell

C'est probablement une question très fondamentale, mais pour une raison quelconque, il me semble que je ne fais pas trop attention à l'évidence.

J'ai une variable appelée filepath=/tmp/name

Pour accéder à la variable, je sais que je peux le faire $filepath

Dans mon script Shell, j'ai essayé de faire quelque chose comme ceci (les tics à l'arrière sont destinés)

`tail -1 $filepath_newstap.sh`

Cette ligne échoue, duuh! parce que la variable ne s'appelle pas $filepath_newstap.sh

Comment puis-je ajouter _newstap.sh au nom de la variable? Veuillez noter que les ticks arrière sont destinés à l'évaluation de l'expression

80
tawheed

Utilisation

"$filepath"_newstap.sh

ou

${filepath}_newstap.sh

ou

$filepath\_newstap.sh

_ est un caractère valide dans les identificateurs. Le point n'est pas, donc le shell a essayé d'interpoler $filepath_newstap.

Vous pouvez utiliser set -u pour que le shell se termine avec une erreur lorsque vous référencez une variable non définie.

151
choroba

Utilisez des accolades autour du nom de la variable:

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

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

3
vyom