動作するようには思えません文字列(二重引用符はsedに変数置換を使用させる方法であることに注意してください)。だから私は$をエスケープしても問題が解決していますが、ラインがリテラル文字列で置き換え「$、その後で見ることができるようにと思っSED変数の置換は、私は、シェル内の変数を設定
-bash-3.00$ sed -e "s/package require IxLoad.*/$source_repl/g" smtp_tput191Mb.tcl > tmpwatch.tcl
sed: -e expression #1, char 38: unknown option to `s'
-bash-3.00$
:最初に私が直接置換(なし変数に$をエスケープ)で試してみましたsource_repl」というよりもそこに格納された変数:
-bash-3.00$ sed -e "s/package require IxLoad.*/\$source_repl/g" smtp_tput191Mb.tcl > tmpwatch.tcl
-bash-3.00$ diff smtp_tput191Mb.tcl tmpwatch.tcl
11c11
< package require IxLoad
---
> $source_repl
-bash-3.00$
私はsedの中で変数置換を行う方法についての多くのサイトを見上げ、それらはすべて上記が動作する必要があることを示しているように見えます。私は何が欠けていますか?実際の変数にこれが原因で何かがありますか?
ドットは 's ///'コマンドの右側にあるときにエスケープする必要はありません。 –