如果我从脚本运行以下命令:
#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中定义的环境变量?
set -x
在shell中使用可使shell在执行每个命令之前回显每个命令。这可以消除很多混乱。(此外,我经常set -u
使取消引用未设置的变量成为一个硬错误。(另请参见set -e
。))