Próbuję uruchomić polecenie ze zmiennej w skrypcie powłoki. Użyta powłoka to powłoka bash.Uruchom polecenie powłoki ze zmiennej w skrypcie powłoki
Plik exp
zawiera:
abcdef
wykonując następujące polecenie:
sed s/b/\/exp
... produkuje wyjście:
a cdef
Ale wykonującym:
cmd="sed s/b/\/exp"
echo $cmd
$cmd
... produkuje następujący błąd:
sed s/b/\/exp
sed: -e expression #1, char 5: unterminated `s' command
widzę, że dodanie eval
przed wykonaniem robót. Ale nie mogę zrozumieć, dlaczego. Czy potrafisz wyjaśnić, dlaczego jedna metoda działa, a druga nie działa?
Nie umieszczaj poleceń w łańcuchach. Jak widzieliście, nie zawsze działa. Oto kilka [zalecane czytanie] (http://mywiki.wooledge.org/BashFAQ/050). –
Dzięki za odpowiedź i link – Yosha
możliwy duplikat [jak umieścić wszystkie argumenty polecenia w jednej zmiennej] (http://stackoverflow.com/questions/28542911/how-to-put-all-command-arguments-in- jedna zmienna) – tripleee