Tengo una variable llamada filepath=/tmp/name
.
Para acceder a la variable, sé que puedo hacer esto: $filepath
En mi script de shell intenté hacer algo como esto (las comillas invertidas están destinadas)
`tail -1 $filepath_newstap.sh`
Esta línea falla, duuh !, porque la variable no se llama $filepath_newstap.sh
¿Cómo agrego _newstap.sh
el nombre de la variable?
Tenga en cuenta que las comillas inversas están destinadas a la evaluación de expresiones.
set -u
qué hace que el script se anule si hace referencia a una variable indefinida.${}
y comillas dobles? ¿Debería preferir uno sobre el otro?Use llaves alrededor del nombre de la variable:
fuente
$filepath_newstap.sh
estaba interpretando${filepath_newstap}.sh
más que como lo previsto${filepath}_newstap.sh
, lo que resolvería el problema."$filepath"_foo
y${filepath}_foo
ambos se expandirían a/tmp/name_foo
. Sin embargo,'$filepath'_foo
,"$"filepath_foo
, y$"filepath"_foo
haría todo expansión evitar por completo. Es por eso queexport PATH=$PATH:$addpath
funciona para agregar:$addpath
(que estaría sujeto a la expansión de parámetros) a laPATH
variable de entorno.En Bash:
fuente