Eu executo o seguinte script:
VAR="Test"
sh -c 'echo "Hello $VAR"'
Mas eu entendo:
# ./test.sh
Hello
Como posso enviar a variável VAR
do meu script para o shell criado com sh -c '...'
?
shell
shell-script
scripting
Matthieu Napoli
fonte
fonte
export var="Test"
em uma linha.Aqui está outra maneira de passar variáveis
sh -c
(como argumentos posicionais):fonte
$@
que funcione conforme o esperado, por exemplo.sh -c 'echo "Hello $@"' _ "$VAR" "$VAR2"
`$0
é exibido nas mensagens de erro / aviso do shell.Se você não deseja exportá-los como variáveis de ambiente, aqui está um truque que você pode fazer. Salve sua definição de variável em um arquivo
.var_init.sh
e origine -a em seu sub-shell da seguinte maneira:.var_init.sh
na linha de comando:
Dessa forma, você define suas variáveis apenas na execução do seu subshell.
fonte
ENV=.var_ini.sh sh -c '...'
.var_init.sh
deve ser procurado no diretório atual (ao contrário de$PATH
), ele deve ser escrito. ./var_init.sh