Mam funkcję basha Unix, która wykonuje skrypt analizujący niestandardowe zmienne środowiskowe. Chcę uniknąć eksportowania odpowiednich zmiennych w bashie, a zamiast tego ustawić je tylko dla skryptu, jako część komendy wykonawczej.Ustawianie zmiennych środowiskowych dla skryptu w lokalnej zmiennej funkcji bash
Jeśli ustawię zmienne bezpośrednio w komendzie - np. VARNAME=VARVAL script_name
- to działa dobrze. Jednak ponieważ chcę ustawić wiele zmiennych, w oparciu o różne warunki, chcę użyć lokalnej zmiennej funkcji do przechowywania ustawień zmiennych środowiskowych, a następnie użyć tej zmiennej w poleceniu wykonania skryptu. Mam lokalną zmienną "vars", która jest ostatecznie ustawiona, np. Na VARNAME=VAR
, ale jeśli spróbuję uruchomić ${vars} script_name
z mojej funkcji bash, otrzymam "polecenie nie znaleziono" błąd dla zmiennej zmiennej $ vars - tzn. zawartość $ vars jest interpretowana jako polecenie, a nie jako zmienne środowiskowe.
Próbowałem różnych odmian składni polecenia, ale jak dotąd bez skutku. Obecnie muszę wyeksportować odpowiednie zmienne w funkcji, przed wywołaniem skryptu, a następnie usunąć/zresetować je do poprzednich wartości, ale nie jest to tak naprawdę rozwiązanie, na które miałem nadzieję.
Każda pomoc zostanie bardzo doceniona.
Dzięki Sharon
dziękuję za szybką odpowiedź. Zadziałało :-)! (Rzeczywiście spróbowałem użyć eval w pewnym momencie, ale przypadkowo użyłem niewłaściwej składni). – Sharon
['eval' to zło] (http://mywiki.wooledge.org/BashFAQ/048) – l0b0