67

私は持っています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

first を置き換えるだけです$ROOT。つまり、出力は次のようになります

exec /HOME/COM/FILE/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
4

4 に答える 4

135

言う:

sed "s|\$ROOT|${HOME}|" abc.sh

ノート:

  • シェルが変数を展開するように、二重引用符を使用します。
  • /置換が含まれているため、異なるセパレータを使用してください/
  • $展開したくないので、パターン内の をエスケープします。

編集:のすべての出現を置き換えるために$ROOT、言う

sed "s|\$ROOT|${HOME}|g" abc.sh
于 2013-10-03T06:14:32.640 に答える
25

これはあなたのために働くかもしれません:

sed 's|$ROOT|'"${HOME}"'|g' abc.sh > abc.sh.1
于 2013-10-03T06:33:03.527 に答える