sollten Sie in der Lage sein, es mit awk oder etwas leicht zu analysieren, aber hier sind, wie ich es tun würde:
echo $GCC_PREPROCESSOR_DEFINITIONS | grep -Po 'SANDBOX_ENV=\d+' | sed 's/SANDBOX_ENV=//'
In Ihrem Echo Kontext:
echo "SANDBOX value is $(echo $GCC_PREPROCESSOR_DEFINITIONS | grep -Po 'SANDBOX_ENV=\d+' | sed 's/SANDBOX_ENV=//')"
Grundsätzlich verrohrt I den Inhalt von GCC_PREPROCESSOR_DEFINITIONS und greifte den SANDBOX_ENV-Teil aus.
grep -P
ist die Perl regex \ d +, weil ich POSIX nicht mag. Nur eine Vorliebe. Im Wesentlichen
grep -P 'SANDBOX_ENV=\d+'
was tut, ist die Linie in den Inhalt zu finden, um es geleitet, die die Zeichenfolge „SANDBOX_ENV =“ und eine beliebige Anzahl von Ziffern enthält nachfolgenden sie. Wenn der Wert alphanumerics enthalten könnte, kann man die \ d ändern für Ziffern w für Wort \, die a-zA-Z0-9 umfasst und Sie erhalten:
grep -Po 'SANDBOX_ENV=\w+'
Das + bedeutet nur, da zumindest ein Zeichen sein muss, des Typs, der durch das vorhergehende Zeichen angegeben wurde, einschließlich aller nachfolgenden übereinstimmenden Zeichen.
die -o (nur-übereinstimmend) in grep -Po wird verwendet, um die Übereinstimmung zu isolieren, so dass Sie anstelle der gesamten Zeile "SANDBOX_ENV = 1" erhalten.
Dieser Ausgang wird dann zum sed-Befehl geleitet, wo ich einen einfachen Fund ersetze und ersetze, wo ich "SANDBOX_ENV =" durch "" ersetzt habe und nur den Wert dahinter belassen habe. Es gibt wahrscheinlich einfachere Möglichkeiten, es mit awk zu machen, aber das musst du selbst lernen.
Können Sie den wörtlichen Wert von $ {} GCC_PREPROCESSOR_DEFINITIONS analysieren? Sie könnten den Literalwert als Befehl in einem Shell-Skript ausführen. Dann würden die entsprechenden Shell-Umgebungsvariablen auf diese Werte gesetzt. (kann mich nicht an die Syntax aus der Hand erinnern ...) –
Ich habe keine Ahnung von Shell-Skript. Wird versuchen, nach Befehlen zu suchen. –