Eu tenho uma variável chamada filepath=/tmp/name
.
Para acessar a variável, sei que posso fazer o seguinte: $filepath
Em meu script de shell, tentei fazer algo assim (os acentos são intencionais)
`tail -1 $filepath_newstap.sh`
Esta linha falha, duuh !, porque a variável não é chamada $filepath_newstap.sh
Como faço _newstap.sh
para anexar ao nome da variável?
Observe que os crases são destinados à avaliação da expressão.
set -u
que faz com que o script seja abortado se você referenciar uma variável indefinida.${}
e aspas duplas? Devo preferir um em vez do outro?Use chaves ao redor do nome da variável:
fonte
$filepath_newstap.sh
sendo interpretado como${filepath_newstap}.sh
e não como pretendido${filepath}_newstap.sh
, o que resolveria o problema."$filepath"_foo
e${filepath}_foo
ambos se expandem para/tmp/name_foo
. No entanto,'$filepath'_foo
,"$"filepath_foo
, e$"filepath"_foo
faria tudo de expansão evitar completamente. É por isso queexport PATH=$PATH:$addpath
funciona para adicionar:$addpath
(o que estaria sujeito à expansão de parâmetros) àPATH
variável de ambiente.No Bash:
fonte