徒然日記
2009年3月24日(火)
■ readコマンド
$ cat file | while read A B ; do echo $A echo $B done
こんなsyntaxはよく使うと思うのだけど fileの中身が1行とか、コマンドの出力を変数に代入するばあいはwhileはずしても大丈夫だべ。と思って以下のようにした。
$ echo "hoge fuga" | read A B $ echo $A $ echo $B
これの結果は
hoge fuga
になってほしかったのだが、bashでは空値(空行2行)になる。zshでは上述の出力になるので望んだとおり。
bashで正しく表示させるには
$ echo "hoge fuga" | (read A B ; echo $A ; echo $B)
とsub shellにするなりしてブロックしてやらないとダメ。
わけわからなくてウンウン悩みました…
# kitaj [そりゃ別プロセスのbashでreadしてるんだから元のbashの$Aとかには反映されないよね. むしろzshの方が変..]