私はabc.sh
を持っています:
exec $ROOT/Subsystem/xyz.sh
Unixボックスでは、echo $HOME
を印刷すると/HOME/COM/FILE
が返されます。
Sedを使用して$ROOT
を$HOME
に置き換えたい。
期待される出力:
exec /HOME/COM/FILE/Subsystem/xyz.sh
試しましたが、期待した出力が得られません:
sed 's/$ROOT/"${HOME}"/g' abc.sh > abc.sh.1
添加:
abc.sh
がある場合
exec $ROOT/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
その後で
sed "s|\$INSTALLROOT/|${INSTALLROOT}|" abc.sh
最初の$ROOT
のみを置き換えています。つまり、出力は次のようになります。
exec /HOME/COM/FILE/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
いう:
sed "s|\$ROOT|${HOME}|" abc.sh
注意:
sed
が変数を展開するように二重引用符を使用します。/
が含まれるため、/
とは異なるセパレーターを使用します$
をエスケープします。編集:$ROOT
のすべての出現を置き換えるために、言う
sed "s|\$ROOT|${HOME}|g" abc.sh
これはあなたのために働くかもしれません:
sed 's|$ROOT|'"${HOME}"'|g' abc.sh > abc.sh.1