Passando a variável do shell pai para filho via shell script
No shell pai (raiz) executando o seguinte:
SESSION_RECORD=started
Saída :
echo $SESSION_RECORD
started
No entanto, quando verifico o status de um script de shell, o valor não está sendo atribuído. Sei que cria um filho e executa o script, por isso não leva a variável.
Existe uma maneira de importar isso do shell pai para o shell filho? Não quero usar a exportação porque a variável raiz é dinâmica.
script para ref:
#!/bin/bash
session=`echo $SESSION_RECORD`
echo $session
if [ "$session" == "started" ]
then
echo "screen records"
else
echo "screen not started"
fi
Basicamente, meu script deve verificar o valor da variável e, se corresponder, deve entrar no loop e executar os comandos posteriormente.
O valor da variável SESSION_RECORDmuda dinamicamente, portanto, com base no valor, preciso executar um script.
Respostas
Você não precisa definir o valor de uma variável ao exportá-la. Você pode fazer:
SESSION_RECORD=started
echo "Now some other stuff"
export SESSION_RECORD && ./myscript
e exportará o valor atual de SESSION_RECORDpara o seu script.
Se você transformar seu script em uma função, ele não criará um subshell durante a execução, portanto, acessar a variável deve funcionar bem. Talvez isso funcione para você?
Exemplo:
$ cat test.sh
#!/bin/bash
function foo() {
echo $foo
}
$ source test.sh
$ foo=5
$ foo
5
$ foo=4
$ foo
4
$