Si dovrebbe essere in grado di analizzare facilmente con awk o qualcosa del genere, ma ecco come lo farei:
echo $GCC_PREPROCESSOR_DEFINITIONS | grep -Po 'SANDBOX_ENV=\d+' | sed 's/SANDBOX_ENV=//'
nel vostro contesto eco:
echo "SANDBOX value is $(echo $GCC_PREPROCESSOR_DEFINITIONS | grep -Po 'SANDBOX_ENV=\d+' | sed 's/SANDBOX_ENV=//')"
Fondamentalmente ho convogliato il contenuto di GCC_PREPROCESSOR_DEFINITIONS e grezza la porzione SANDBOX_ENV.
grep -P
consiste nell'utilizzare il regex Perl \ d +, perché non mi piace POSIX. Solo una preferenza In sostanza ciò che
grep -P 'SANDBOX_ENV=\d+'
fa è quello di trovare la linea nel contenuto convogliato ad esso che contiene la stringa "SANDBOX_ENV =" e qualsiasi numero di cifre successo esso. Se il valore potrebbe contenere caratteri alfanumerici è possibile modificare il \ d per le cifre a \ w per la parola che racchiude a-zA-Z0-9 e si ottiene:
grep -Po 'SANDBOX_ENV=\w+'
Il + significa semplicemente ci deve essere almeno un carattere del tipo specificato dal carattere precedente, inclusi tutti i caratteri successivi che corrispondono.
il -o (solo-matching) in grep -Po viene utilizzato per isolare la corrispondenza in modo che invece dell'intera riga venga visualizzato solo "SANDBOX_ENV = 1".
Questa uscita viene quindi inviata al comando sed dove faccio una semplice ricerca e sostituzione dove ho sostituito "SANDBOX_ENV =" con "", lasciando solo il valore dietro di esso. Ci sono probabilmente modi più semplici per farlo come con awk, ma dovrai impararlo tu stesso.
Potete analizzare il valore letterale di $ {} GCC_PREPROCESSOR_DEFINITIONS? È possibile eseguire il valore letterale come comando in uno script di shell. Quindi, le corrispondenti variabili di ambiente della shell verrebbero impostate su tali valori. (non ricordo la sintassi a mano libera ...) –
Non ho idea di script di shell. Cercherò di cercare i comandi. –