# Read 組込みコマンド

Read 組込みコマンドは標準入力から行を読み込み変数に代入します。

## 構文

- `read [-Aer] [-P|-p] 変数名…`

## 説明

Read コマンドは標準入力から一行の文字列を読み込み、それを​変数に代入します。

`-r` (`--raw-mode`) オプションを付けると、行内のバックスラッシュは通常の文字と同様に扱われます。

`-r` (`--raw-mode`) オプションを付けない場合、読み込んだ文字列の中のバックスラッシュ (`\`) は​引用符として働きます。バックスラッシュが行末にあるときは行の連結を行います。​対話モードのシェルが 2 行目以降を読み込むとき、標準入力が端末ならば `PS2` 変数の値がプロンプトとして出力されます。

読み込んだ文字列は、​単語分割によって分割します。分割後の各文字列が、それぞれオペランドで指定された変数の値に順に設定されます。指定された変数の数より分割結果のほうが多い場合は、最後の変数に残りの分割結果の全てが入ります。分割結果の数より指定された変数のほうが多い場合は、余った変数には空文字列が入ります。

## オプション

`-A`
`--array`

  最後に指定した変数を​配列にします。分割後の各文字列が配列の要素として設定されます。

`-e`
`--line-editing`

  読み込みに​行編集を使用します。

  行編集が有効になるには以下の条件が全て満たされている必要があります:

  - シェルが​対話モードである。

  - vi または emacs オプションが有効になっている。

  - 標準入力と標準エラーが端末である。

`-P`
`--ps1`

  シェルが対話モードで標準入力が端末ならば、(最初の) 行を読み込む前に `PS1` 変数をプロンプトとしてを表示します。

`-p プロンプト`
`--prompt=プロンプト`

  シェルが対話モードで標準入力が端末ならば、(最初の) 行を読み込む前にプロンプトを表示します。

`-r`
`--raw-mode`

  読み込んだ文字列の中のバックスラッシュを引用符として扱わないようにします。

## オペランド

変数名

  読み込んだ文字列を格納する変数の名前です。

## 終了ステータス

エラーがない限り read コマンドの終了ステータスは 0 です。

なお、行を完全に読み込む前に入力が終端に達した時は終了ステータスは非 0 になります。

## 補足

Read コマンドは​準特殊組込みコマンドです。

POSIX には `-A` (`--array`) オプションに関する規定はありません。よってこのオプションは POSIX 準拠モードでは使えません。

`PS1` 変数をプロンプトとして表示する際、​`PS1R` および `PS1S` 変数も使用されます。 `PS2` についても同様です。