Countdown für Bash-Eingaben
In einem Bash-Skript unter Linux nutze ich den Befehl read, um das Skript am Ende erst nach der Eingabe eines Zeichens zu beenden. Ich hätte jedoch gern, dass das Skript sich nach einigen Sekunden selbst beendet – so wie das unter Windows etwa der Befehl choice mit dem Parameter /T erledigt. Gibt es dafür eine einfache Lösung?
- Reiko Kaps
In einem Bash-Skript unter Linux nutze ich den Befehl read, um das Skript am Ende erst nach der Eingabe eines Zeichens zu beenden. Ich hätte jedoch gern, dass das Skript sich nach einigen Sekunden selbst beendet – so wie das unter Windows etwa der Befehl choice mit dem Parameter /T erledigt. Gibt es dafür eine einfache Lösung?
Ja. Wenn Sie den Befehl read mit dem Parameter -t SEKUNDEN ergänzen, beendet sich die Eingabe nach der angegebenen Zeit automatisch und zwar mit einem Fehler:
read -t 10 TEST ; [ ! -z "$TEST" ] && echo $TEST ||
echo "Zeit abgelaufen!"
Im Beispiel wartet read zehn Sekunden auf eine Eingabe und schreibt diese gegebenenfalls in die Variable $TEST. Die verkürzt aufgeschriebene Abfrage [ ! -z „$TEST“ ] hinter dem Semikolon überprüft, ob $TEST einen Wert enthält, und gibt diesen via echo-Befehl aus. Sollte die Abfrage scheitern, schreibt der letzte Teil (hinter den beiden || ) den Text „Zeit abgelaufen!“ auf die Textkonsole.
(rek)