Je suis un débutant en script Bash mais je suis un apprenti rapide. Habituellement. J'essaye d'écrire un script pour tuer et redémarrer une instance de Hudson - il doit être redémarré pour prendre en compte les changements dans les variables d'environnement. Ce que j'ai jusqu'à présent:Script Bash pour tuer et redémarrer 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 &
Le script détermine correctement le fonctionnement PID par exemple Hudson et le tue. Cependant, il attend juste après la ligne "kill" et ne continue pas. Si j'appuie sur une touche à cet endroit, cela met fin au processus et ferme le script, sans même parvenir à la boucle while. Clairement, il me manque quelque chose sur la façon dont le processus devrait être tué. Ce n'est pas que le processus d'Hudson est suspendu et ne répond pas à "tuer"; il sort normalement, juste pas avant que j'intervienne.
Je suis également sûr que cela pourrait être beaucoup plus efficace, mais maintenant je voudrais juste comprendre où je me trompe.
Merci d'avance.
Merci pour les conseils bash et le meilleur refactor. – AndrewRich