环境变量替代sed?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (52)

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

#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla

没事。

但是,如果我运行:

#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s' 

我在教程中看到,要从shell中替换环境变量,您需要停止,并且“out”引用该$varname部分,以便它不会被直接替换,这是我所做的,只有在前面定义变量时才起作用。

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

提问于
用户回答回答于

你的两个示例看起来完全相同,这使得难以诊断问题。潜在问题:

  1. 您可能需要双引号,如英寸 sed 's/xxx/'"$PWD"'/'
  2. $PWD可能包含一个斜杠,在这种情况下,您需要找到一个包含的字符$PWD作为分隔符。

或许,一次性处理这两个问题

sed 's@xxx@'"$PWD"'@'
用户回答回答于

你想搜索'foo'并将其替换为$ BAR的内容,则可以将sed命令放在双引号中。

sed 's/foo/$BAR/g'
sed "s/foo/$BAR/g"

首先,$ BAR不会正确扩展,而第二个$ BAR会正确扩展。

所属标签

可能回答问题的人

  • 红双喜经典VS中华

    1 粉丝0 提问8 回答
  • 杰西

    5 粉丝1 提问4 回答
  • 浮生长恨欢娱少

    个人站长 · 站长 (已认证)

    51 粉丝2 提问4 回答
  • 滑稽园扛把子

    Swoole Inc · PHP工程师 (已认证)

    135 粉丝0 提问4 回答

扫码关注云+社区