- 書式
- read [OPTIONS] [VARIABLES...]
概要
read
コマンドは
標準入力から1行読み込んで、
その結果を1つ以上の
シェル変数 に代入します。
以下のオプションがあります。
-c CMD
/--command=CMD
CMD
を初期文字列に設定する。-g
/--global
- グローバル変数にする。
-l
/--local
- ローカル変数にする。
-m NAME
/--mode-name=NAME
NAME
をread
コマンドが
読み書きする履歴ファイルにする。
fish
に指定したときは
通常の履歴ファイルが使われる。-n NCHARS
/--nchars=NCHARS
- 1行読み込まれるのを待つのではなく、
NCHARS
文字読み込んだら
読み込みを終了させる。 -p PROMPT_CMD
/--prompt=PROMPT_CMD
-
read
コマンドが使う
プロンプトを表示するためのシェルコマンドを
PROMPT_CMD
に設定する。
デフォルトでは
set_color green; echo read; set_color normal; echo '> '
である。
-R RIGHT_PROMPT_CMD
/--right-prompt=RIGHT_PROMPT_CMD
read
コマンドが使う
右プロンプトを表示するためのシェルコマンドを
RIGHT_PROMPT_CMD
に設定する。
デフォルトでは未定義。-s
/--shell
- シンタックスハイライト 、 タブ補完 、コマンドの終端
(訳注:ブロックコマンド入力中は読み込みを継続する)
を有効にする。
シェルスクリプトを読み込むのに最適。 -u
/--unexport
- 変数を export しない。(デフォルト)
-U
/--universal
- 変数を ユニバーサル変数 にする。
-x
/--export
- 変数を export する。
-a
/--array
- 配列変数にする。
1つの変数しか指定できず、
トークンは1つの変数に
配列として代入される。 -z
/--null
- 改行の代わりにNUL文字(
\0
)まで読み込む。
対話モードを無効にする。
read
コマンドは、
- 標準入力から1行読み込み、
IFS
シェル変数によってトークンに分割し、- トークンを
VARIABLES
に指定された各々の変数に代入
します。
変数よりもトークンの方が多い場合、
残りはすべて最後の変数に代入されます。
特別なケースとして、
IFS
を空文字列に設定したとき、
1文字が1トークンになります。
詳しくは 変数のスコープ を
参照してください。
実行例
以下は $foo
にhelloを代入します。
$ echo hello|read foo $ echo $foo hello
ここから例追加。
初期文字列をHOGEにして
read
コマンドを実行し、
変数 $a
に代入します。
そのままEnterを押すと
このようになります。
$ read -cHOGE a; echo $a read> HOGE HOGE
2文字を読み込んだら即終了します。
$ read -n2 a; echo $a read> ab ab
プロンプトを「what: 」にします。
$ read -p'echo "what: "' a; echo $a what: read read
シェルスクリプトを入力し、
eval で実行します。
$ read -s a; echo $a read> for x in 1 2 3 echo $x end for x in 1 2 3 echo $x end $ eval $a 1 2 3
複数個の変数を指定した場合の
渡り方はこのようになります。
$ read a b c ; echo "$a:$b:$c" read> 1 2 3 4 1:2:3 4 $ read a b c ; echo "$a:$b:$c" read> 1 2 1:2:
以下の例では、
配列として格納されます。
$ read -a a; echo $a[2] read> 1 2 3 4 2
IFS
変数を設定することで、
文字の区切りを設定します。
$ begin set -l IFS ''; echo abcd | read a b c; echo $b; end b $ begin set -l IFS ':'; echo a:b:c:d | read a b c; echo $c; end c:d
最後までお読みいただき、ありがとうございました。参考になれば嬉しいです。