サブシェル
Manpage of BASHを読んでいても、なかなか気づかなかった(汗)耄碌しすぎだ!
ls -la /home | read a b echo $a
としても、read a bがサブシェル(別のプロセス)で実行されているので、$aにはなにも代入されていない。(元の値があれば、それが残っている)
これを避けるには、パイプではなくて、ファイルを経由したリダイレクトを使うことができる
ls -la /home > /tmp/.$$ read a b < /tmp/.$$ echo $a
これは期待通りに動くようだ。