readコマンド
$ read [オプション] 変数名
| オプション | 由来 | 説明 |
|---|---|---|
default |
read variable | 標準入力から1行読み込み、変数に代入 |
使用例
1. 標準入力からの読み取り
ユーザーからキーボードでの入力を受け取る方法です。
/greeting.sh
#!/bin/bash
echo -n "名前を入力してください: "
read name
echo "こんにちは、$name さん!"
実行例:
$ ./greeting.sh
名前を入力してください: 太郎
こんにちは、太郎 さん!
2. リダイレクトを使ったファイルからの読み取り
ファイルの内容を1行ずつ読み取るには、while read ループと < ファイル名 を使います。
/read_file.sh
#!/bin/bash
while read line
do
echo "読み取り内容: $line"
done < sample.txt
実行例 (sample.txt の内容):
sample.txt
りんご
バナナ
ぶどう
実行結果:
$ ./read_file.sh
読み取り内容: りんご
読み取り内容: バナナ
読み取り内容: ぶどう
3. パイプからの読み取り
read_pipe.sh
#!/bin/bash
cat sample.txt | while read line
do
echo "パイプ読み取り: $line"
done
実行例(sample.txt の内容):
sample.txt
東京
大阪
名古屋
実行結果:
$ ./read_pipe.sh
パイプ読み取り: 東京
パイプ読み取り: 大阪
パイプ読み取り: 名古屋
4. 4つの値を4つの変数に分けて読み取り
/read_multiple.sh
#!/bin/bash
echo '1 2 3 4' | read i1 i2 i3 i4
echo "i1=$i1, i2=$i2, i3=$i3, i4=$i4"
実行結果:
$ . ./read_multiple.sh
i1=1, i2=2, i3=3, i4=4
5. 4つの値を2つの変数に分けて読み取り
/read_multiple.sh
#!/bin/bash
echo '1 2 3 4' | read i1 i2
echo "i1=$i1, i2=$i2"
実行結果:
$ . ./read_two.sh
i1=1, i2=2 3 4