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

2 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  2. Flachy Joe Messages postés 2303 Statut Membre 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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      else
      echo "trop tard"


      ;-DD
      0
    2. Flachy Joe Messages postés 2303 Statut Membre 261
       
      Zut grillé... Salut zipe31 !
      0
    3. Utilisateur anonyme
       
      salut,

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