Passaggio della variabile dalla shell genitore a quella figlia tramite script di shell
Sulla shell madre (root) eseguendo quanto segue:
SESSION_RECORD=started
Uscita :
echo $SESSION_RECORD
started
Tuttavia, quando controllo lo stato da uno script di shell, il valore non viene assegnato. Sono consapevole che crea un figlio ed esegue lo script, motivo per cui non accetta la variabile.
C'è un modo per importarlo dalla shell genitore alla shell figlia? Non voglio usare l'esportazione poiché la variabile radice è dinamica.
script per ref:
#!/bin/bash
session=`echo $SESSION_RECORD`
echo $session
if [ "$session" == "started" ]
then
echo "screen records"
else
echo "screen not started"
fi
Fondamentalmente, il mio script dovrebbe controllare il valore della variabile e se corrisponde dovrebbe entrare nel ciclo ed eseguire ulteriormente i comandi.
Il valore della variabile SESSION_RECORD
cambia in modo dinamico, quindi in base al valore, devo eseguire uno script.
Risposte
Non è necessario impostare il valore di una variabile quando la esporti. Tu puoi fare:
SESSION_RECORD=started
echo "Now some other stuff"
export SESSION_RECORD && ./myscript
e esporterà il valore corrente di SESSION_RECORD
nel tuo script.
Se rendi il tuo script una funzione, allora non creerà una subshell durante l'esecuzione, quindi l'accesso alla variabile dovrebbe funzionare bene. Forse funzionerebbe per te?
Esempio:
$ cat test.sh
#!/bin/bash
function foo() {
echo $foo
}
$ source test.sh
$ foo=5
$ foo
5
$ foo=4
$ foo
4
$