Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有: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 看起来像:
测试.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