sed中的环境变量替换

如果我从脚本运行以下命令:

#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替换环境变量,您需要先停止操作,然后对$varname部分进行“引用”,以便不直接替换该部分,这是我所做的,并且仅当该变量在紧接之前定义时才起作用。

我如何被s识别$var为shell中定义的环境变量?

回答:

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

  1. 您可能需要双引号,例如 sed 's/xxx/'"$PWD"'/'

  2. $PWD可能包含一个斜杠,在这种情况下,您需要查找一个 包含在其中的字符$PWD用作定界符。

同时解决这两个问题

sed 's@xxx@'"$PWD"'@'

以上是 sed中的环境变量替换 的全部内容, 来源链接: utcz.com/qa/425100.html

回到顶部