mam abc.sh
:Jak używać zmiennych w poleceniu w sed?
exec $ROOT/Subsystem/xyz.sh
na polu Unix, jeśli mogę wydrukować echo $HOME
potem dostać /HOME/COM/FILE
.
Chcę zastąpić $ROOT
z $HOME
przy użyciu sed.
oczekiwany wynik:
exec /HOME/COM/FILE/Subsystem/xyz.sh
Próbowałem, ale nie dostaję oczekiwany wynik:
sed 's/$ROOT/"${HOME}"/g' abc.sh > abc.sh.1
Dodatek:
Jeśli mam abc.sh
exec $ROOT/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
następnie
sed "s|\$INSTALLROOT/|${INSTALLROOT}|" abc.sh
jest zastąpienie tylko pierwszy $ROOT
, to wyjście zbliża jak
exec /HOME/COM/FILE/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
możliwe duplikat [zastąpić ciąg w skrypcie] (http : //stackoverflow.com/questions/3306007/replace-a-string-in-shell-script) – tripleee
@tripleee Chociaż jestem pewien, że byłby to duplikat wielu innych pytań, które wskazałeś nie jest najlepszy, ponieważ tak nie jest zawierają ukośniki w zmiennej. Wszystkie odpowiedzi używają '/' jako separatora. Oczywiste rzeczy, wiem, ale zostawiają miejsce na lepsze (podwójne) pytanie. – devnull
Możliwy duplikat [zmiennych powłoki w skrypcie sed] (http://stackoverflow.com/questions/7006910/shell-variables-in-sed-script) –