`read -t` druckt meine Eingabe nicht

`read -t` druckt meine Eingabe nicht

Ich verwende den folgenden Befehl:

read -t 5 num

Beim Ausführen von:

echo "$num"

druckt den Wert von nicht num.

Antwort1

Die korrekte Syntax für readwird durch dieses Beispiel veranschaulicht:

$Nummer lesen
10
$echo "$num"
10

Antwort2

readist einBash integriertFunktion, die eine Zeile von der Standardeingabe liest und in einer Variablen speichert. Die grundlegende Syntax readlautet:

read var

Wenn Sie dies ausführen, wartet die Eingabeaufforderung auf Ihre Texteingabe, bis Sie drücken Enter. Nach dem Drücken wird der Text in der Variable Entergespeichert , die Sie dann mit anzeigen können :varecho

echo $var

Das -tFlag, das Sie in Ihrer Frage verwenden, dient dazu, readeine Zeitüberschreitung nach Ablauf der angegebenen Zeit (in Sekunden) zu bewirken. Wenn die angegebene Zeit abgelaufen ist und Sie keinen Text eingegeben und gedrückt haben Enter, echo $varwird nichts zurückgegeben.

Sie haben wahrscheinlich falsch verstanden, was passiert, wenn Sie einfach Text eingeben, während readauf die Eingabe gewartet wird. Vielleicht haben Sie gedacht, dass der eingegebene Text nach Ablauf der Zeit als Eingabe verwendet und daher in der Variablen readgespeichert wird .var

Dies ist aber nicht der Fall! Der Text wird nur dann gespeichert, varwenn Sie drücken Enter.

verwandte Informationen