我有:用法:
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