shell scriptのread

たとえば、

10 20 30
40 50 60

などといった、空白でくぎられたデータを一行ひとまとまりで処理したいとする。これをシェルのforループですると失敗する。

~% for a in `cat number`
do
echo $a
done
10
20
30
40
50
60

"10 20 30", "40 50 60"でまとめたいのに、10, 20, 30, 40, 50, 60
と分解してしまう。

わたしはいままでこういうのはわざわざ

for a in `sed 's/ /:/g' number`
do
echo $a
done

と空白を記号に変換してやっていた。でも2chをみてたら、

cat number | while read a
do
echo a
done

でいいとのこと。これって、常識なんだろうな。そうだろうな。
これだから、「文化系でコンピュータ覚えた人間は…」といじけてしまった。

あー、そういえば前に「manを読むよりshell使え」などとえらそうに
書いてたが、おれはshellもよーわかっとらんわい。