Скрипт работает вечно

не могли бы вы дать мне понять, почему следующий скрипт работает навсегда даже после того, как последний эхо-отчет успешно запущен? Спасибо за помощь.

cd /app/pme/${property:DeployEnv}/ruleengine ./stop.sh unzip -o ruleengine.app.zip unzip -o ruleengine.${property:DeployEnv}.zip dos2unix *.sh echo begin chmod chmod ugo+rx *.sh echo end chmod echo begin run.sh ./run.sh echo end run.sh cd /app/pme/${property:DeployEnv}/ruleengine pwd echo start rm commands rm ruleengine.app.zip rm ruleengine.${property:DeployEnv}.zip echo end rm commands exit 

Чтобы отладить сценарий Bash, который я предполагаю выше, это Bash, просто запустите его следующим образом:

 $ bash -x <script.sh> 

Вы также можете включить отключение отладочного сообщения, добавив set -x и set +x вокруг блоков кода, где вы хотите увидеть более подробную информацию.

пример

 #!/bin/bash echo "msg1" echo "msg2" set -x echo "msg3" echo "msg4" set +x echo "msg5" 

Затем, когда я запускаю его:

 $ ./my.sh msg1 msg2 + echo msg3 msg3 + echo msg4 msg4 + set +x msg5 

Мы можем видеть, какие команды выполняются в приведенном выше выпуске. Команда отображается со знаком плюса, префиксным командой, а затем ее выходом.

 + echo msg3 msg3 

Отображается только блок команд, завернутый в команды set ..

Я предложил в комментарии выше, и похоже, что это привело к определению проблемы, поставив ее здесь, потому что это может быть полезно для отладки.

Сделай это. set -v on затем запустите этот скрипт и покажите нам результаты. то set -o verbose

Автор определил, что Исключение выбрано программой Java.

Все эхо-строки должны иметь свои аргументы в кавычках, например:

 echo 'end rm commands'