Wydaje się, że zalecany sposób prowadzenia pośrednie ustawienie zmiennej w bashu jest użycie eval
:Pośrednie przypisanie zmiennej w bashu
var=x; val=foo
eval $var=$val
echo $x # --> foo
Problemem jest zwykle jednym z eval
:
var=x; val=1$'\n'pwd
eval $var=$val # bad output here
(i ponieważ jest to zalecane w wielu miejscach, zastanawiam się, ile skryptów jest podatnych na ten ...). g (uciekł) cytaty naprawdę nie działa:
var=x; val=1\"$'\n'pwd\"
eval $var=\"$val\" # fail with the above
Chodzi o to, że bash został pośrednie odniesienie zmienna pieczone w (z ${!foo}
), ale nie widzę żadnej takiej drogę do zrobienia zadanie pośredni - jest Czy istnieje jakiś rozsądny sposób, aby to zrobić?
Dla przypomnienia, znalazłem rozwiązanie, ale to nie jest coś, co Pomyślę „sane” ...:
eval "$var='"${val//\'/\'\"\'\"\'}"'"
wskazanie pośrednie na RHS nie jest to, czego szukam. –
(* czoło-klaps *) Bah, całkowicie przegapiłem, dlaczego * nie * chcę, aby w kierunku RHS. Ponieważ twoja odpowiedź w ogóle o tym nie mówi, będę ją teraz edytować, zamiast odpowiadać ... samemu sobie patrzę ... –
Fantastycznie! W przeszłości robiłem trochę skomplikowanych nonsensów "eval eval export". Bardzo dziękuję. W przypadku pracowników Google przejdź do powyższej odpowiedzi, a nie do formatu eksportu eval eval. – bgStack15