Я пробовал следующее в командной строке, и они работают, но когда я помещаю их в сценарий bash, я получаю сообщение об ошибке (см. Ниже):Sed in 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'
Однако, как я сказал, я использую его из командной строки, и она работает:
[[email protected] Doxygen]$ ROOT_BUILD_HOME=MONKEY; sed -e "s/INSERT_ME_HERE/`echo ${ROOT_BUILD_HOME}`/g" ./Doxyfile | grep MONKEY
INPUT = MONKEY
Почему это работает в одном случае, а не в другом?
Также установлен ROOT_BUILD_HOME
, я эхо направо перед выражением sed внутри скрипта оболочки.
echo `date`: "Going to run doxygen on source and move to ${ROOT_BUILD_HOME}";
Просто примечание стороны:. Вместо использования '/ tmp' вы должны дать' mktemp' попробовать для таких потому что это повышает безопасность и надежность ваших скриптов. – mschilli