Passer la variable du parent au shell enfant via un script shell
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
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.
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 $