文字列を置き換える方法の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
一重引用符を二重引用符に置き換えると、スクリプトは期待どおりに機能します。