>>712
あーそっか、ごめん
それは | の右側はサブシェルで実行されるから
サブシェルは別プロセスなので、そこで作られた変数は親シェル(現在のシェル)からは見えない

こういう場合「プロセス置換」とリダイレクト(<)を組み合わせるのが常套手段らしい

$ mapfile array < <(printf 'foo\nbar\n')
$ echo 1: ${array[0]}; echo 2: ${array[1]}
1: foo
2: bar
$

参考
bash - readarray (or pipe) issue - Unix & Linux Stack Exchange
http://unix.stackexchange.com/questions/136206/readarray-or-pipe-issue/136216#136216
bashのプロセス置換(Process Substitution)で中間ファイルを不要に | システム開発メモ
http://progmemo.wp.xdomain.jp/archives/189