Prompt avec reponse par defaut dans les 5 secondes

Résolu
fabricedu13 -  
 fabricedu13 -
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   Statut Contributeur Dernière intervention   6 431
 
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 2102 Date d'inscription   Statut Membre Dernière intervention   261
 
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   Statut Contributeur Dernière intervention   6 431
 
Salut,

else
echo "trop tard"


;-DD
0
Flachy Joe Messages postés 2102 Date d'inscription   Statut Membre Dernière intervention   261
 
Zut grillé... Salut zipe31 !
0
Utilisateur anonyme
 
salut,

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