Passando a variável do shell pai para filho via shell script

Aug 24 2020

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

2 seumasmac Aug 24 2020 at 18:28

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.

Invidian Aug 24 2020 at 17:59

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
$