read コマンド
目的
標準入力から 1 行読み取ります。
構文
読み取り [-p] [ -r ] [-s][-u [ n ]][ VariableName?プロンプト]
説明
read コマンドは、標準入力から 1 行を読み取り、 IFS (内部フィールド分離文字) 変数の文字を分離文字として使用して、入力行の各フィールドの値をシェル変数に割り当てます。 VariableName パラメーターは、入力行から 1 つのフィールドの値を取り込んだシェル変数の名前を指定します。 VariableName パラメーターで指定した最初のシェル変数には、最初のフィールドの値が代入され、VariableName パラメーターで指定した 2 番目のシェル変数には 2 番目のフィールドの値が代入されるというように、最後のフィールドに達するまで、値が代入されていきます。 標準入力行のフィールド数が VariableName パラメーターで指定した対応するシェル変数よりも多い場合は、最後に指定したシェル変数に残りの全フィールドの値が代入されます。 フィールド数がシェル変数よりも少ない場合は、残りのシェル変数は空文字列に設定されます。
注: VariableName パラメーターを省略すると、変数 REPLY がデフォルトの変数名として使用されます。
read コマンドによってシェル変数を設定すると、現在のシェル実行環境はその影響を受けます。
フラグ
| 項目 | 説明 |
|---|---|
| -p | |& (パイプ接続、アンパーサンド) を使用して、Korn シェルが実行したプロセスの出力から入力を読み取ります。 注: -p フラグにファイル終了文字を指定すると、別のプロセスを作成するためにこのプロセスのクリーンアップが実行されます。
|
| -r | read コマンドが ¥ (¥) 文字を制御文字としてではなく、入力行の一部として処理するように指定します。 |
| -s | 入力をコマンドとして Korn シェルのヒストリー・ファイルに保存します。 |
| -u [ n ] | 1 桁のファイル・ディスクリプター番号 nから入力を読み取ります。 ファイル記述子は、ksh exec 組み込みコマンドを使用してオープンすることができます。 n のデフォルト値は 0 で、これはキーボードを示します。 値 2 は標準エラーを示します。 |
パラメーター
| 項目 | 説明 |
|---|---|
| VariableName?プロンプト | 変数の名前と使用されるプロンプトを指定します。 対話式 Korn シェルはプロンプトを標準エラーに書き込んで、入力を実行します。 Prompt に複数のワードが含まれる場合、必ず各ワードを単一引用符または二重引用符で囲んでください。 |
| VariableName... | 1 つまたはそれ以上の変数名をホワイト・スペースで区切って指定します。 |
終了状況
このコマンドは、以下の終了値を戻します。
| 項目 | 説明 |
|---|---|
| 0 | 正常終了。 |
| >0 | ファイル終わり文字が検出されたか、またはエラーが発生しました。 |
例
- 次のスクリプトは、各行の最初のフィールドが行の末尾に移動されたファイルを出力します。
while read -r xx yy do print printf "%s %s/n" $yy $xx done < InputFile - 行を読み取ってフィールドに分割し、プロンプトとして
「Please enter:」
を使用するには、次のように入力します。
システムは次のように表示します。read word1?"Please enter: " word2
word1 変数の値はPlease enter: You enter: hello worldハロー
でなければならず、 word2 はワールド
でなければなりません。 - コプロセスを作成するには、print -p を使用してコプロセスに書き込み、read -p を使用してコプロセスから入力を読み取るには、次のように入力します。
line 変数の値は(read; print "hello $REPLY") print -p "world" read -p linehello world
でなければなりません。 - 入力行のコピーをコマンドとしてヒストリー・ファイルに保管するには、次のように入力します。
input_file にread -s line < input_fileecho hello world
が含まれている場合、echo hello world
がコマンドとしてヒストリー・ファイルに保存されます。