Mat*_*gan 4 bash scripting sed
我在命令行上尝试了以下操作,但是当我将它们放在bash脚本中时,我得到一个错误(见下文):
sed -e "s/INSERT_ME_HERE/"${ROOT_BUILD_HOME}"/g" ./Doxyfile > ./tmp && mv ./tmp ./Doxyfile
sed -e "s/INSERT_ME_HERE/'${ROOT_BUILD_HOME}'/g" ./Doxyfile > ./tmp && mv ./tmp ./Doxyfile
sed -e "s/INSERT_ME_HERE/`echo ${ROOT_BUILD_HOME}`/g" ./Doxyfile > ./tmp && mv ./tmp ./Doxyfile
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
sed: -e expression #1, char 19: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)
但是,就像我说我从命令行使用它,它的工作原理:
[mehoggan@hogganz400 Doxygen]$ ROOT_BUILD_HOME=MONKEY; sed -e "s/INSERT_ME_HERE/`echo ${ROOT_BUILD_HOME}`/g" ./Doxyfile | grep MONKEY
INPUT = MONKEY
Run Code Online (Sandbox Code Playgroud)
为什么它在一个案例而不是另一个案件中有效?
也是ROOT_BUILD_HOME设置,我在shell脚本中的sed表达式之前回显它.
echo `date`: "Going to run doxygen on source and move to ${ROOT_BUILD_HOME}";
Run Code Online (Sandbox Code Playgroud)
我猜这是ROOT_BUILD_HOME从一个开始/,它sed解释为结束你的替换字符串.我对吗?如果是这样,那么尝试使用不同的分隔符:
sed -e "s#INSERT_ME_HERE#${ROOT_BUILD_HOME}#g" ./Doxyfile > ./tmp && mv ./tmp ./Doxyfile
Run Code Online (Sandbox Code Playgroud)