首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Shell脚本- sed不起作用

Shell脚本- sed不起作用
EN

Stack Overflow用户
提问于 2013-05-06 15:42:36
回答 2查看 5.9K关注 0票数 2

我有: test.txt:

代码语言:javascript
复制
version-1
version-1

ori.sh:

代码语言:javascript
复制
old="version-1"
new="version-2"
sed -i .bak 's/${old}/${new}/g' test.txt

运行ori.sh时,什么也不会发生。我希望test.txt看起来像这样:

test.txt*

代码语言:javascript
复制
version-2
version-2

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-06 15:46:47

单引号是问题所在。bash (或其他shell)不会在单引号中展开变量。

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

代码语言:javascript
复制
sed -i.bak "s/${old}/${new}/g" test.txt
票数 10
EN

Stack Overflow用户

发布于 2013-05-06 15:54:18

你需要用双引号引用你的变量。

下面的方法对我很有效:

代码语言:javascript
复制
old="version-1"
new="version-2"
sed -i.bck 's:'"${old}"':'"${new}"':g' test.txt
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16394248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档