外壳脚本 - sed 不起作用



我有:用法:

version-1
version-1

ori.sh:

old="version-1"
new="version-2"
sed -i .bak 's/${old}/${new}/g' test.txt

运行ori.sh时,什么也没有发生。我希望test.txt看起来像:

用法*:

version-2
version-2

任何想法?

单引号是问题所在。Bash(或其他shell)不使用单引号展开变量。

使用带双引号的sed命令,以便shell可以展开变量:

sed -i.bak "s/${old}/${new}/g" test.txt

你需要把变量用双引号括起来。

以下内容适合我:

old="version-1"
new="version-2"
sed -i.bck 's:'"${old}"':'"${new}"':g' test.txt

最新更新