【发布时间】:2013-04-29 22:37:53
【问题描述】:
我有: test.txt:
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 看起来像:
test.txt*:
version-2
version-2
有什么想法吗?
【问题讨论】:
我有: test.txt:
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 看起来像:
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
【讨论】: