zsh - localで配列を宣言するときは代入を同時にしてはいけないっぽい

zshで少しハマったことのメモです。

環境

/Users/kanno% zsh --version
zsh 5.0.5 (x86_64-apple-darwin13.0.0)

zshの配列について

こちらの記事が参考になります。

zsh の配列操作の基本から応用まで

ハマったこと

まずはグローバルな変数宣言で試す

/Users/kanno% () { ary=(1 2); echo $ary }
1 2

これはよし。
なお上記の書き方は無名関数の即時実行です。

zsh で無名関数を作る

変数をローカル宣言にする

/Users/kanno% () { local -a ary=(1 2); echo $ary }
(anon): unknown file attribute

!?

値を文字列にしてみる

/Users/kanno% () { local -a ary=(a b); echo $ary }
(anon): number expected

!?!?

解決

宣言と代入は分ける

/Users/kanno% () { local -a ary; ary=(1 2); echo $ary }
1 2
/Users/kanno% () { local -a ary; ary=(a b); echo $ary }
a b

原因

わかりません