Ho due script di shell che vorrei richiamare da un programma C. Vorrei che le variabili di shell impostate nel primo script fossero visibili nel secondo. Ecco cosa sarebbe simile:salva e ripristina le variabili shell
a.sh:
var=blah
<save vars>
b.sh:
<restore vars>
echo $var
Il migliore che è venuta in mente finora è una variante sul tema "SET>/tmp/vars "per salvare le variabili e" eval $ (cat/tmp/vars) "per ripristinarle. "Eval" soffoca quando tenta di ripristinare una variabile di sola lettura, quindi ho bisogno di annullarli. Un elenco di queste variabili è disponibile tramite "declare -r". Ma ci sono alcune vars che non appaiono in questo elenco, ma non possono ancora essere impostate in eval, ad es. BASH_ARGC. Quindi ho bisogno di far fuori anche quelli.
A questo punto, la mia soluzione sembra molto fragile e soggetta a errori, e non sono sicuro di quanto sia portatile. C'è un modo migliore per farlo?
ho bisogno di fare un certo lavoro in C tra l'esecuzione di a.sh e b.sh, quindi non è possibile per una chiamata a b . Nota che sono interessato alle variabili di shell, non alle variabili di ambiente. – danvk
ah, mi dispiace per quello! – eruciform