Ho abc.sh
:
exec $ROOT/Subsystem/xyz.sh
Su una casella Unix, se stampo echo $HOME
ottengo /HOME/COM/FILE
.
Voglio sostituire $ROOT
con $HOME
usando sed.
Uscita prevista:
exec /HOME/COM/FILE/Subsystem/xyz.sh
Ho provato, ma non sto ottenendo l’output atteso:
sed 's/$ROOT/"${HOME}"/g' abc.sh > abc.sh.1
aggiunta:
Se ho abc.sh
exec $ROOT/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
quindi con
sed "s|\$INSTALLROOT/|${INSTALLROOT}|" abc.sh
sta solo sostituendo il primo $ROOT
, cioè, l’output sta arrivando come
exec /HOME/COM/FILE/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
Dire:
sed "s|\$ROOT|${HOME}|" abc.sh
Nota:
sed
possa espandere le variabili. /
poiché la sostituzione contiene /
$
nello schema poiché non vuoi fuggire. EDIT: per sostituire tutte le occorrenze di $ROOT
, ad esempio
sed "s|\$ROOT|${HOME}|g" abc.sh
Questo potrebbe funzionare per te:
sed 's|$ROOT|'"${HOME}"'|g' abc.sh > abc.sh.1