如果我从脚本运行这些命令:
#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 中定义的?
最佳答案
您的两个示例看起来相同,这使得问题难以诊断。潜在问题:
您可能需要双引号,如 sed 's/xxx/'"$PWD"'/'
$PWD
可能包含斜杠,在这种情况下,您需要找到 $PWD
中包含的字符 not 才能使用作为分隔符。
也许同时解决这两个问题
sed 's@xxx@'"$PWD"'@'
https://stackoverflow.com/questions/584894/