#file script.sh
while true
do
nslookup www.toto.com #ou autre
done
le SIGINT envoyer en tapant controle C est envoyer a la commande en cours d'execution (ici nslookup) et ne permets pas de sortir de la boucle.
Pour pouvoir sortir, il faut trapper le SIGINT dans le script soit :
#file script.sh
trap exit INT
while true
do
nslookup www.toto.com #ou autre
done
ou bien
#file script.sh
while true
do
trap break INT
nslookup www.toto.com #ou autre
done
....
Mon probleme vient de mes tests au sein d'un bash interactif :
aussi bien
[toto@toto.com]# trap exit INT; while true ; do nslookup www.toto.com; done
que
[toto@toto.com]# while true ; do trap break INT; nslookup www.toto.com; done
N'arrete pas le script : seul nslookup chope le SIGINT ...
Comment ce fesse ?
# PID
Posté par Adrien BUSTANY (site web personnel) . Évalué à 2.
[^] # Re: PID
Posté par Pierre Mallard . Évalué à 1.
Et si je reste sur le script je trouve plus simple le TRAP qui ne demande a l'utilisateur que de faire juste un CTRL-C...
De toute maniere j'aimerais bien comprendre pourquoi ca ne fonctionne pas en ligne de commande ... ?
PPS : bon le trap exit INT n'est pas interessant en interactif, mais j'aimerais pouvoir utiliser le trap break INT dans le while ...
# Peut être comme ça
Posté par benoar . Évalué à 4.
Donc voici ce que j'ai trouvé :
while true
do
nslookup www.toto.com &
wait $!
done
En bref, ça lance le processus en arrière plan, mais ça l'attend tout de suite. L'astuce c'est que wait est une commande intégrée au shell, donc quand elle reçoit un SIGINT, c'est bien le shell qui s'interrompt.
Seul petit "bug", c'est que la commande est généralement exécutée une dernière fois après l'avoir killée (comme on kill le wait, on revient au shell avant que notre commande ait pu (éventuellement) se terminer).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.