Я новичок в сценариях Bash, но я быстро учащийся. Как правило. Я пытаюсь написать сценарий, чтобы убить и перезапустить экземпляр Hudson - его нужно перезапустить, чтобы получить изменения в переменных среды. То, что я до сих пор:Сценарий Bash, чтобы убить и перезапустить Hudson
#!/bin/bash
h=`pgrep -f hudson`
if test "$h" != ""; then
kill $h
while [ "$h" != "" ]; do
sleep 1
unset h
h=`pgrep -f hudson`
done
fi
java -jar ~/hudson/hudson.war &
Скрипт правильно определяет идущее PID Hudson экземпляра и убивает его. Однако он просто ждет после строки «kill» и не продолжит работу. Если я ударил ключ там, он завершает уничтожение процесса и выходит из сценария, даже не доходя до цикла while. Ясно, что я пропустил что-то о том, как процесс должен быть убит. Дело не в том, что процесс Хадсона вешен и не реагирует на «убить»; он выходит нормально, только пока я не вмешаюсь.
Я также уверен, что это может быть намного более эффективным, но прямо сейчас я просто хотел бы понять, где я ошибаюсь.
Заранее спасибо.
Спасибо за советы bash и, очевидно, лучший рефактор. – AndrewRich