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もよーわかっとらんわい。