FRUiT a écritTout d'abord eval ne pourra pas relancer le process avec les crochets.
Pour les enlever avant d'exécuter tu peux faire :
rproc="${proc//[][]/}"
eval "${rproc}"
Ensuite avec awk traitant le ps, même si aucun résultat n'est trouvé le code de sortie reste 0, donc le test n'est plus valide. Il faudra faire quelque chose du genre :
rproc=$(ps | awk 'BEGIN { FS="/" } /'"$proc"'/ { print $2 ; exit }')
[ "${rproc}" ] || {
eval "${rproc}"
}
Ce qui résoudra le problème des crochets en même temps.
Mais bon je suis pas sûr qui ait pas plus simple comme méthode c'était une idée comme ça. Peut-être d'autres auront de meilleures idées.
Ouais bon en fait plutôt que d'utiliser des crochets génants pour relancer les commandes, ou s'em....er avec awk ou des grep -q, ps -C c'est mieux. Et puis ça peut être bien de détacher les processus du scrit en question histoire que si il plante ou est arrêté, les processus continuent de s'exécuter. Donc, tu peux surement faire :
plist="webcommanager process2 process3"
for proc in $plist; do
ps -C $proc || nohup $proc &
done