`read -t` が入力を印刷しない

`read -t` が入力を印刷しない

次のコマンドを使用します。

read -t 5 num

ただし、実行中:

echo "$num"

の値が印刷されませんnum

答え1

の正しい構文はread次の例で示されています。

$読み取り番号
10
$エコー「$num​​」
10

答え2

readBash組み込み標準入力から行を読み取り、それを変数に格納する関数。 の基本的な構文は次のreadとおりです。

read var

これを実行すると、 を押すまでプロンプトはテキストの入力を待機しますEnter。 を押すとEnter、テキストは変数に保存されvar、 を使用して表示できるようになりますecho

echo $var

-t質問で使用したフラグは、指定された時間 (秒単位) が経過した後にタイムアウトにするために使用されます。read指定された時間が経過してもテキストを入力せずに を押した場合はEnterecho $var何も返されません。

おそらく、入力を待っている間にテキストを入力した場合、何が起こるかを誤解しているのでしょう。readおそらく、入力したテキストはタイムアウト時に入力として使用されread、変数に格納されると考えているのでしょうvar

しかし、そうではありません。テキストvarは を押した場合にのみ に保存されますEnter

関連情報