2009-12-22 8 views
1

Voici ce qui va se passer, un message est affiché avec une heure spécifiée en attente d'une pression sur une touche, si aucune touche, il reprendra.Comment mettre en œuvre une touche de minuterie dans bash?

Exemple

"Appuyez sur Echap pour quitter, sinon vous allez mourir .. 3..2..1"

« Appuyez sur x» pour remettre à plus tard et vérifier le courrier électronique, lisez certains blogs, facebook, twitter .. sinon vous reprendrez le travail pendant 12 heures .. 3..2..1 "

Cela devrait être une fonction très pratique. Comment créer cette fonctionnalité dans bash?

Répondre

6

Regardez sur la page de manuel bash pour la commande "read" et notez l'option "-t timeout". Quelque chose comme cela devrait vous aider à démarrer

for i in 3 2 1 ; do 
    read -p $i... -n 1 -t 1 a && break 
done 
3

Utilisez les options -t et -n de la commande bash interne read, ne pas oublier aussi -r et -s. (voir le manuel pour les détails)

#!/bin/bash 

timeout=3 

echo -n "Press ESC to exit, otherwise you will die..." 
while [ $timeout -gt 0 ]; do 
    echo -n " $timeout" 
    if read -n1 -t1 -r -s x; then 
     echo 
     exit 0 
    fi 
    let timeout-- 
done 
echo 
Questions connexes