ファイルの文字列をスクリプトに置き換える [重複]

ファイルの文字列をスクリプトに置き換える [重複]

文字列を置き換える方法の1つsedは次のとおりです。

sed -i 's/old_str/new_str/' file.txt

replace.shしかし、もしそうなら

 sed -i 's/$1/$2/' $3

もちろん、実行可能な後はコマンドが./replace.sh old_str new_str file.txt機能しないようです。replace.shなぜそんなことですか?


私はrplそれが私がやろうとしていることを正確にやっていることを知っていますが、replace.shなぜそれがうまくいかないのか知りたいです。

答え1

一重引用符内にパラメータ拡張はありません(参照:stackoverflowに対する以前の回答)

toto=1
echo '$toto'
> $toto
echo "$toto"
> 1

一重引用符を二重引用符に置き換えると、スクリプトは期待どおりに機能します。

関連情報