Passer la variable du parent au shell enfant via un script shell

Aug 24 2020

Sur le shell parent (racine) en exécutant ce qui suit :

SESSION_RECORD=started

Sortie :

echo $SESSION_RECORD
started

Cependant, lorsque je vérifie l'état à partir d'un script shell, la valeur n'est pas attribuée. Je suis conscient qu'il crée un enfant et exécute le script, c'est pourquoi il ne prend pas la variable.

Existe-t-il un moyen d'importer cela du shell parent vers le shell enfant? Je ne veux pas utiliser l'exportation car la variable racine est dynamique.

script pour réf :

#!/bin/bash

session=`echo $SESSION_RECORD`
echo $session if [ "$session" == "started" ]
then
echo "screen records"
else
echo "screen not started"
fi

Fondamentalement, mon script doit vérifier la valeur de la variable et si elle correspond, elle doit entrer dans la boucle et exécuter les commandes plus loin.

La valeur de la variable SESSION_RECORDchange dynamiquement, donc en fonction de la valeur, je dois exécuter un script.

Réponses

2 seumasmac Aug 24 2020 at 18:28

Vous n'avez pas besoin de définir la valeur d'une variable lorsque vous l'exportez. Tu peux faire:

SESSION_RECORD=started
echo "Now some other stuff"
export SESSION_RECORD && ./myscript

et il exportera la valeur actuelle de SESSION_RECORDvers votre script.

Invidian Aug 24 2020 at 17:59

Si vous faites de votre script une fonction, il ne créera pas de sous-shell lors de l'exécution, donc l'accès à la variable devrait fonctionner correctement. Peut-être que cela fonctionnerait pour vous?

Exemple:

$ cat test.sh #!/bin/bash function foo() { echo $foo
}
$ source test.sh $ foo=5
$ foo 5 $ foo=4
$ foo 4 $