powinny być zdolne do analizowania go łatwo z awk czy coś, ale oto jak zrobiłbym to:
echo $GCC_PREPROCESSOR_DEFINITIONS | grep -Po 'SANDBOX_ENV=\d+' | sed 's/SANDBOX_ENV=//'
W swojej echa kontekstu:
echo "SANDBOX value is $(echo $GCC_PREPROCESSOR_DEFINITIONS | grep -Po 'SANDBOX_ENV=\d+' | sed 's/SANDBOX_ENV=//')"
Zasadniczo rurami zawartość GCC_PREPROCESSOR_DEFINITIONS i wyodrębniona część SANDBOX_ENV.
grep -P
należy użyć wyrażenia regularnego Perla \ d +, ponieważ nie lubię POSIX. Tylko preferencja. Zasadniczo co
grep -P 'SANDBOX_ENV=\d+'
nie jest znalezienie linia w treści rurami o to, że zawiera ciąg „SANDBOX_ENV =” i dowolną liczbę kolejnych cyfr go. Jeżeli wartość może zawierać znaki alfanumeryczne można zmienić \ d dla cyfry do \ W za słowa, które obejmuje a-zA-0-9 i masz:
grep -Po 'SANDBOX_ENV=\w+'
Znak + oznacza po prostu musi istnieć co najmniej jeden znak typu określonego przez poprzedzający go znak, w tym wszystkie pasujące do siebie znaki, które pasują.
-o (tylko dopasowanie) w grep -Po służy do odizolowania dopasowania tak, że zamiast całej linii pojawia się "SANDBOX_ENV = 1".
Dane wyjściowe są następnie przesyłane do komendy sed, gdzie wykonuję proste wyszukiwanie i zastępuję miejsce, w którym zastąpiłem "SANDBOX_ENV =" symbolem "", pozostawiając za sobą tylko wartość. Są prawdopodobnie łatwiejsze sposoby na to, jak w awk, ale musisz się tego nauczyć.
można analizować dosłowne wartości $ {GCC_PREPROCESSOR_DEFINITIONS}? Można wykonać literalną wartość jako polecenie w skrypcie powłoki. Następnie odpowiednie zmienne środowiskowe powłoki zostaną ustawione na te wartości. (nie pamiętam składni off strony ...) –
Nie mam pojęcia o skrypcie powłoki. Spróbuje wyszukać polecenia. –