【发布时间】:2012-02-08 06:30:03
【问题描述】:
我在命令行上尝试了以下操作并且它们可以工作,但是当我将它们放在 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
我得到的错误是:
sed: -e expression #1, char 19: unknown option to `s'
但是就像我说的,我是从命令行使用它并且它可以工作:
[mehoggan@hogganz400 Doxygen]$ ROOT_BUILD_HOME=MONKEY; sed -e "s/INSERT_ME_HERE/`echo ${ROOT_BUILD_HOME}`/g" ./Doxyfile | grep MONKEY
INPUT = MONKEY
为什么它在一种情况下有效,而在另一种情况下无效?
还设置了 ROOT_BUILD_HOME,我在 shell 脚本中的 sed 表达式之前回显它。
echo `date`: "Going to run doxygen on source and move to ${ROOT_BUILD_HOME}";
【问题讨论】:
-
附注:不要使用
./tmp,您应该尝试mktemp来执行此类任务,因为它可以提高脚本的安全性和稳健性。