2010-12-10 17 views
3

Wie kann ich den Benutzer zur Eingabe auffordern und mit meinem Skript fortfahren, wenn innerhalb einer vorgegebenen Zeitspanne keine Antwort empfangen wird.Den Benutzer zur Eingabe auffordern und die Eingabe abbrechen, nachdem er x Sekunden gewartet hat.

Zum Beispiel ist dies etwas, was ich im Moment habe:

read -p "Would you like to reboot? (y/n) " yn 
case $yn in 
    [Yy]*) echo "shutting down"; break;; 
    [Nn]*) echo "cancelled shutdown"; break;; 
    *) echo "Please answer y or n.";; 
esac 

Allerdings mag ich die Eingabeaufforderung auf dem Terminal für 2 Minuten sitzen und dann, wenn keine Antwort empfangen wird weiterhin mit meinem Skript.

Ich habe vage Gedanken, dass dies möglich ist, indem Sie die Eingabe in einer Subshell ausführen, aber ich würde nicht wissen, wie eine Zeitüberschreitung zur gleichen Zeit ausgeführt wird. Der Pseudo-Code Timeout könnte sein, so etwas wie:

sleep 200s 
kill the prompt 
continue... 

Antwort

2

die -t Option von read verwenden.

+0

Brilliant und einfach. Vielen Dank – Inti

Verwandte Themen