首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >sed中的环境变量替换

sed中的环境变量替换
EN

Stack Overflow用户
提问于 2009-02-25 14:10:31
回答 9查看 312.8K关注 0票数 258

如果我从脚本运行这些命令:

代码语言:javascript
复制
#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla

这很好。

但是,如果我运行:

代码语言:javascript
复制
#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s' 

我在教程中读到,要从外壳程序中替换环境变量,您需要停下来,并引用$varname部分,这样它就不会被直接替换,这就是我所做的,并且只有在之前定义了变量时才能起作用。

如何才能让sed将$var识别为在shell中定义的环境变量?

EN

回答 9

Stack Overflow用户

发布于 2009-04-14 17:24:39

除了Norman Ramsey的回答之外,我还想补充说,您可以用双引号将整个字符串引起来(这可能会使语句更具可读性,也不容易出错)。

因此,如果要搜索'foo‘并将其替换为$BAR的内容,可以将sed命令用双引号括起来。

代码语言:javascript
复制
sed 's/foo/$BAR/g'
sed "s/foo/$BAR/g"

在第一种情况下,$BAR不会正确扩展,而在第二种情况下,$BAR会正确扩展。

票数 175
EN

Stack Overflow用户

发布于 2014-04-17 21:20:37

另一个简单的选择:

因为$PWD通常包含一个斜杠/,所以对于sed语句使用|而不是/

代码语言:javascript
复制
sed -e "s|xxx|$PWD|"
票数 77
EN

Stack Overflow用户

发布于 2012-03-08 18:37:13

除了"/“之外,您还可以使用其他字符进行替换:

代码语言:javascript
复制
sed "s#$1#$2#g" -i FILE
票数 67
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/584894

复制
相关文章

相似问题

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