9.3.20 readコマンド(標準入力から読み込んで変数に格納する)
形式
read [-p][-r][-u[num]][varname ...]
機能
標準入力から読み込みを行います。標準入力から1行読み取り,読み込んだ内容をvarnameに指定したシェル変数に格納します。
引数
- -p
パイプを使用して,バックグラウンドプロセスの出力から読み込みます。
- -r
-
\(バックスラッシュ)をエスケープ文字として扱いません。
readコマンドは読み込む内容に\(バックスラッシュ)が含まれていた場合,エスケープ文字として扱います。行中に指定されていた場合は,\(バックスラッシュ)の後ろがシェル変数IFSで定義した区切り文字であっても区切り文字とは扱いません。行末に指定されていた場合は,次の行を継続して読み込みます。\(バックスラッシュ)をエスケープ文字として扱わない場合は,-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 別プロセスでの実行」に示す注意事項もあわせて参照してください。
Windowsの場合,エディタからのデバッグ実行でコンソールまたはコマンドプロンプトから入力などをするときは,ブレークポイントでの停止中や先行コマンドの実行中など,readコマンドが開始する前であってもキー入力が受け付けられます。その結果,入力内容を正しく読み込めなくなるため,readコマンドの開始前にキー入力をしないでください。
readコマンドの開始前にキー入力した内容は,readコマンド開始時に表示されます。その場合は表示内容をすべて削除してから再度入力してください。
-
readコマンドは,標準入力から読み込んだ文字列の改行コードが[LF]の場合,[LF]を取り除いた内容を変数に格納します。また,標準入力から読み込んだ文字列の改行コードが[CR]+[LF]の場合,[CR]と[LF]を取り除いた内容を変数に格納します。
使用例
ファイルstring.txtの内容を読み込み,標準出力に出力します。
ジョブ定義スクリプトの内容
while read LINE do echo "$LINE" done < string.txt
実行ジョブのSTDOUTファイルの内容
******** 実行ジョブのSTDOUTファイルの内容 ******** HITACHI JP1 Advanced Shell
バックグラウンドプロセス(coproc.sh)の標準出力に出力された文字列を変数NAMEに読み込みます。
coproc.sh |& read -p NAME