English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Linuxのreadコマンドは標準入力から数値を読み取ります。
read コマンドは標準入力から一行のデータを読み取ります。このコマンドはキーボードからの入力を読み取るために使用できます。リダイレクトを使用すると、ファイルから一行のデータを読み取ることができます。
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
パラメータ説明:
1、簡単な読み取り
#!/bin/bash #ここではデフォルトで改行します echo "ウェブサイト名を入力してください: " #キーボードからの入力を読み取ります read website echo "あなたが入力したウェブサイト名は $website" exit 0 #退出
テスト結果は:
ウェブサイト名を入力してください: ja.oldtoolbag.com あなたが入力したウェブサイト名は ja.oldtoolbag.com
2、-pパラメータは、readコマンドの行に直接提示を指定することができます。
#!/bin/bash read -p "ウェブサイト名を入力してください: " website echo "あなたが入力したウェブサイト名は $website" exit 0
テスト結果は:
ウェブサイト名を入力してください:ja.oldtoolbag.com あなたが入力したウェブサイト名は ja.oldtoolbag.com
3、-tパラメータはreadコマンドが入力を待つ秒数を指定します。時間が経過すると、readコマンドは非ゼロの終了ステータスを返します。
#!/bin/bash if read -t 5 -p "ウェブサイト名を入力してください: " website then echo "あなたが入力したウェブサイト名は $website" else echo "\n申し訳ありませんが、入力がタイムアウトしました。" fi exit 0
プログラムを実行せずに待つ 5 秒後:
ウェブサイト名を入力してください: 申し訳ありませんが、入力がタイムアウトしました
4、入力時間の計測に加えて、以下を使用することもできます -n パラメータ設定 read コマンドは入力された文字の数を数えます。入力された文字の数が設定された数に達すると、自動的に終了し、入力されたデータを変数に割り当てます。
#!/bin/bash read -n1 -p "続行したいですか [Y/N]?" answer case $answer in Y | y) echo "fine ,continue";; N | n) echo "ok,good bye";; *) echo "error choice";; esac exit 0
この例では以下を使用しました-nオプション、数値を続ける 1、readコマンドが一つの文字を受け入れたら終了します。回答を一つの文字で入力すると、readコマンドが即座に入力を受け入れ、変数に渡します。エンターキーを押す必要はありません。
受け入れられるのは 2 個の入力があれば終了:
#!/bin/bash read -n2 -p "なんでもいいので二つの文字を入力してください: " any echo "\nあなたが入力した二つの文字は:$any" exit 0
プログラムを実行するときに二つの文字を入力してください:
なんでもいいので二つの文字を入力してください: 12 あなたが入力した二つの文字は:12
5、-s オプションは以下のことを可能にします read コマンドで入力されたデータはコマンドターミナルに表示されません(実際には表示されていますが、 read コマンドはテキストの色を背景色と同じに設定します)。パスワードの入力にはこのオプションがよく使われます。
#!/bin/bash read -s -p "あなたのパスワードを入力してください: " pass echo "\nあなたが入力したパスワードは $pass" exit 0
プログラムを実行し、パスワードを入力した後は表示されません:
あなたのパスワードを入力してください: あなたのパスワードは w です3codebox
6.ファイルを読み取る
read コマンドが呼び出されるたびに、ファイル内の「一行」のテキストを読み取ります。ファイルに読み取れる行がない場合、read コマンドは非ゼロのステータスで終了します。
ファイル内のデータをどのように read コマンドに渡すか?cat コマンドを使用して、結果をパイプで直接 read コマンドを含む while コマンドに送信します。
テストファイル test.txt の内容は以下の通りです:
123 456 w3codebox
テストコード:
#!/bin/bash count=1 # 設定命令、スペースを入力しない cat test.txt | while read line # cat コマンドの出力をreadコマンドの入力として、readが>の値を読み込む do echo "行 $count:$line" count=$[ $count + 1 ] # 注意、中括号内のスペース。 done echo "finish" exit 0
実行結果は:
行 1:123 行 2:456 行 3:w3codebox finish
を使用して -e 引数を入力します、以下の例の入力文字 a の後に押して Tab キーを押すと、関連するファイル名が表示されます(このディレクトリに存在する場合):
$ read -e -p "ファイル名を入力してください:" str ファイル名を入力してください:a a.out a.py a.pyc abc.txt ファイル名を入力してください:a