readコマンド(標準入力から読み込んで変数に格納する)
形式
read [-p][-r][-u[num]][varname ...]
機能
標準入力から読み込みを行います。標準入力から1行読み取り,読み込んだ内容をvarnameに指定したシェル変数に格納します。
引数
- -p
-
パイプを使用して,バックグラウンドプロセスの出力から読み込みます。
- -r
-
行末に\があっても,次の行を継続行として読み込みません。
- -u[num]
-
ファイル識別子numから読み込みます。numを指定しない場合,標準入力から読み込みます。
numでは,読み込みを行うファイル識別子またはpを指定します。numにpを指定した場合,-pオプションを指定したときと同じになります。
- varname
-
読み込んだ内容を格納する変数名を指定します。
varnameを複数指定した場合,入力行をIFS変数を区切り文字としてフィールド分割し,分割したフィールドをvarnameに順次格納します(1つ目のvarnameには入力行の最初のフィールドを格納し,2つ目のvarnameには2つ目のフィールドを格納します)。
フィールド数がvarnameに指定した変数よりも多い場合は,最後に指定した変数に残りの全フィールドの値を格納します。
フィールド数が変数よりも少ない場合は,残りの変数に改行文字を格納します。
終了コード
終了コード |
意味 |
---|---|
0 |
正常終了 |
1 |
正常終了
エラー終了
|
注意事項
-
この正規組み込みコマンドは,コマンドの構文を誤ってもコマンドを実行しているシェルは終了しません。
-
「&」やコマンド置換など,別プロセスでreadコマンドを実行する場合は,「5.1.7 別プロセスでの実行【UNIX限定】」に示す注意事項もあわせて参照してください。
-
Windowsの場合,エディタからのデバッグ実行でコンソールまたはコマンドプロンプトから入力などをするときは,ブレークポイントでの停止中や先行コマンドの実行中など,readコマンドが開始する前であってもキー入力が受け付けられます。その結果,入力内容を正しく読み込めなくなるため,readコマンドの開始前にキー入力をしないでください。
readコマンドの開始前にキー入力した内容は,readコマンド開始時に表示されます。その場合は表示内容をすべて削除してから再度入力してください。
使用例
-
ファイルstring.txtの内容を読み込み,標準出力に出力します。
ジョブ定義スクリプトの内容
while read LINE do echo "$LINE" done < string.txt
実行ジョブのSTDOUTファイルの内容
******** JOB SCOPE STDOUT ******** HITACHI JP1 Advanced Shell
-
バックグラウンドプロセス(coproc.sh)の標準出力に出力された文字列を変数NAMEに読み込みます。
coproc.sh |& read -p NAME