Я подготовил сценарий оболочки для запуска файла Java. Я дал путь Java, путь к нему и зависимости. Я выполняю файл на основе условия.Выполнение сценария оболочки Linux
Ниже приведен фрагмент кода. Код запускается, но элемент управления не выходит из запроса.
CMD=""$JRE_BIN_PATH/java" $SP -cp $CP org.aditya.test.MainClass "[email protected]""
if [ "$1" == 'server' ] && [ "$2" == 'start' ]
then
$CMD &
elif [ "$1" == 'process' ]
then
$CMD &
else
$CMD
fi
Команда зависает при if
и elif
выполняется, так как он использует «&» в конце. Но если управление переходит в другое (без «&»), управление немедленно выходит. Я удалил «&», и все работает отлично. Мой вопрос здесь в том, что такое использование «&» в конце CMD. Почему это вызывает проблему.
'CMD = "" $ JRE_BIN_PATH/java "$ SP -cp $ CP org.aditya.test.MainClass" $ @ "" '- цитирование в оболочке не работает, как будто вы думаете, что это так. Эти посторонние двойные кавычки aren 't превращая его в значение CMD. – davmac
Возможный дубликат [В bash, почему команды оболочки игнорируют кавычки в аргументах, когда аргументы передаются им как переменная?] (http://stackoverflow.com/questions/12136948/in-bash-why-do-shell-commands-ignore-quotes-in-arguments-when-the-arguments-are) – tripleee
Также http://mywiki.wooledge.org/BashFAQ/050 – tripleee