163 votes

Interpolation variable dans l'enveloppe

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

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

Dans mon shell script j'ai essayé de faire quelque chose comme ceci (les backticks sont intentionnels)

`tail -1 $filepath_newstap.sh`

Cette ligne échoue, duuh !, parce que la variable n'est pas appelée $filepath_newstap.sh

Comment puis-je ajouter _newstap.sh au nom de la variable ?

Veuillez noter que les backticks sont destinés à l'évaluation de l'expression.

261voto

choroba Points 56333

Utilisez

"$filepath"_newstap.sh

ou

${filepath}_newstap.sh

ou

$filepath\_newstap.sh

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

Vous pouvez utiliser set -u pour que le shell sorte avec une erreur lorsque vous faites référence à une variable non définie.

23voto

Utilisez des accolades autour du nom de la variable :

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

4voto

vyom Points 520

Dans Bash :

tail -1 ${filepath}_newstap.sh

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X