Ejecuto el siguiente script:
VAR="Test"
sh -c 'echo "Hello $VAR"'
Pero me sale:
# ./test.sh
Hello
¿Cómo puedo enviar la variable VAR
de mi script al shell creado con sh -c '...'
?
shell
shell-script
scripting
Matthieu Napoli
fuente
fuente
export var="Test"
en una línea.Aquí hay otra forma de pasar variables a
sh -c
(como argumentos posicionales):fuente
$@
trabajar como se esperaba, por ejemplo.sh -c 'echo "Hello $@"' _ "$VAR" "$VAR2"
`$0
el shell lo muestra en los mensajes de error / advertencia.Si no desea exportarlos como variables de entorno, aquí hay un truco que podría hacer. Guarde su definición de variabe en un archivo
.var_init.sh
y fuente en su sub-shell de esta manera:.var_init.sh
desde la línea de comando:
De esta manera, solo establece sus variables en la ejecución de su subshell.
fuente
ENV=.var_ini.sh sh -c '...'
.var_init.sh
se espera que se busque en el directorio actual (en lugar de$PATH
), debe escribirse. ./var_init.sh