如果我从脚本运行这些命令:
#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
部分,这样它就不会被直接替换,这就是我所做的,并且只有在变量是在之前定义的。
如何让 sed 将 $var
识别为在 shell 中定义的环境变量?
原文由 RomanM 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的两个示例看起来相同,这使得问题难以诊断。潜在问题:
您可能需要双引号,如
sed 's/xxx/'"$PWD"'/'
$PWD
可能包含斜杠,在这种情况下,您需要找到$PWD
中 不 包含的字符以用作分隔符。要同时解决这两个问题,也许