read コマンド

目的

標準入力から 1 行読み取ります。

構文

読み取り [-p] [ -r ] [-s][-u [ n ]][ VariableName?プロンプト]

[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 ファイル終わり文字が検出されたか、またはエラーが発生しました。

  1. 次のスクリプトは、各行の最初のフィールドが行の末尾に移動されたファイルを出力します。
    while read -r xx yy
    do
             print printf "%s %s/n" $yy $xx
    done < InputFile
  2. 行を読み取ってフィールドに分割し、プロンプトとして 「Please enter:」 を使用するには、次のように入力します。
    read word1?"Please enter:  " word2
    システムは次のように表示します。
    Please enter:
    You enter:
    hello world
    word1 変数の値は ハロー でなければならず、 word2ワールドでなければなりません。
  3. コプロセスを作成するには、print -p を使用してコプロセスに書き込み、read -p を使用してコプロセスから入力を読み取るには、次のように入力します。
    (read; print "hello $REPLY") 
    print -p "world"
    read -p line
    line 変数の値は hello worldでなければなりません。
  4. 入力行のコピーをコマンドとしてヒストリー・ファイルに保管するには、次のように入力します。
    read -s line < input_file
    input_file に echo hello worldが含まれている場合、 echo hello world がコマンドとしてヒストリー・ファイルに保存されます。