#1 Le 26/04/2020, à 18:41
- philoeil
[RESOLU] Quelle commande pour boucler sur une etape d'un script
Bonjour,
J'ai un script qui met un certain temps à s’exécuter et attend une réponse de l'utilisateur pour poursuivre.
J'ai trouvé une commande qui fait un son pour m'alerter
Comment faire pour actionner cette commande sans fin et me permettre d’arrêter cette commande sans arrêter tout le script (par CTRL+C)
Une boucle peut-être de ce genre mais quel test imaginer ?
est-ce que les frappes au clavier (sans usage de read qui interromprait ma boucle sonnante) peuvent par une redirection être renvoyées dans une variable ?
while test
do
mpg123 ~/Documents/MesSons/R2D2Son.mp3
sleep 20
test?
done
Merci
Dernière modification par philoeil (Le 27/04/2020, à 07:30)
Hors ligne
#2 Le 26/04/2020, à 19:23
- Hizoka
Re : [RESOLU] Quelle commande pour boucler sur une etape d'un script
Ça n'irait pas read -t 20 ?
while [[ -z ${REPLY} ]]
do
mpg123 ~/Documents/MesSons/R2D2Son.mp3
echo
read -t 20 -p "Alors ? "
done
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#3 Le 26/04/2020, à 19:37
- kamaris
Re : [RESOLU] Quelle commande pour boucler sur une etape d'un script
Tu pourrais faire
trap 'break' INT
while true; do
mpg123 ~/Documents/MesSons/R2D2Son.mp3
sleep 20
done
trap INT
Le premier ctrl+c arrêtera seulement la boucle infinie.
Ou bien tu peux choisir un autre signal.
Dernière modification par kamaris (Le 27/04/2020, à 09:38)
Hors ligne
#4 Le 27/04/2020, à 07:26
- philoeil
Re : [RESOLU] Quelle commande pour boucler sur une etape d'un script
Bonjour,
Merci à vous Hizoka et Kamaris
La solution de Hizoka me semble fonctionner, Bravo!!
La boucle dans la solution de Kamaris ne parvient pas à s'arréter je n'ai peut être pas compris
Man Trap ne me renvoie rien
Merci bien
Hors ligne
#5 Le 27/04/2020, à 09:43
- kamaris
Re : [RESOLU] Quelle commande pour boucler sur une etape d'un script
trap n'est pas censé renvoyer quelque chose, il est là pour attraper un signal envoyé au script.
Le signal en question, ici, c'est INT, que l'on peut envoyer au script en tapant ctrl+c avec le clavier.
Une fois que trap a reçu le signal, il exécute la commande break, c'est-à-dire qu'il stoppe la boucle while si on se trouve dedans au moment où le signal est envoyé.
Hors ligne
#6 Le 27/04/2020, à 18:44
- philoeil
Re : [RESOLU] Quelle commande pour boucler sur une etape d'un script
Merci, Kamaris.
Effectivement bravo cela marche aussi.
Bonne soirée.
Hors ligne