Я новичок в скриптах 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. Очевидно, я что-то упускаю из-за того, как этот процесс должен быть убит. Дело не в том, что процесс Гудзона зависает и не отвечает «убить»; он выходит нормально, только не до тех пор, пока я не вмешаюсь.
Я также уверен, что это может быть намного эффективнее, но сейчас я просто хотел бы понять, где я иду не так.
Заранее спасибо.