Prompt avec reponse par defaut dans les 5 secondes

Résolu/Fermé
fabricedu13 - 4 juil. 2013 à 16:22
 fabricedu13 - 9 juil. 2013 à 11:56
Bonjour,
comment définir une action par defaut au bout de x secondes si pas de choix de la part de l'utilisateur

Mon exemple :

echo "Dou you want to force creation of SecClass if not used yet in LOP1? [Y|N] "
read answer
case "$answer" in
Y|y) echo "Ok ca marche, et je suis super content !"
;;
N|n) echo "Ok ca marche aussi, et je suis aussi super content !"
;;

esac



concrêtement j'aimerais que si l'utilisateur n'effectue pas d'action clavier la valeur se mette sur N par defaut au bout de 5 secondes par exemple

Merci de votre aide

A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
4 juil. 2013 à 19:11
Salut,

man read


$ cat foo.sh 
#! /bin/bash

read -t 5 -p " Voulez-vous continuez (O/N) ? " 
if [ "$?" -eq 142 ]
then REPLY=N
fi
case ${REPLY} in
O)	echo -e "\nChoix = Oui";;
N)	echo -e "\nChoix = Non";;
esac

$ ./foo.sh 
 Voulez-vous continuez (O/N) ? O

Choix = Oui

$ ./foo.sh 
 Voulez-vous continuez (O/N) ? N

Choix = Non

$ ./foo.sh 
 Voulez-vous continuez (O/N) ? 
Choix = No
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
4 juil. 2013 à 19:13
Salut,
D'après la doc ( https://ss64.com/bash/read.html ) l'option -t permet de définir un timeout après lequel la commande renvoi faux, exemple :

#!/bin/bash

echo "Entre du texte..."
read -t 5 answer
if [ $answer ]
then
	echo "reponse : $answer"
else
	echo "trop tard"
fi;

0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
4 juil. 2013 à 19:14
Salut,

else
echo "trop tard"


;-DD
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
4 juil. 2013 à 19:15
Zut grillé... Salut zipe31 !
0
Utilisateur anonyme
4 juil. 2013 à 20:53
salut,

if test -n "$answer"
avec des guillemets, si par hasard $answer contenait plusieurs mots.
0
Merci à tous de votre aide
0