zsh で blosxom クローン
http://coderepos.org/share/browser/lang/shellscript/blosxom.zsh/
entries[$i]="foo 1 bar 2"
typeset -A entry
: ${(AA)entry::=${(z)entries[$i]}}とかやると、entry に { foo => 1, bar => 2 } みたいな連想配列が入る (実際には Perl みたいには書けない) 連想配列のキーをとりだすには ${(k)aarray} する。
typeset -A は連想配列の宣言 typeset -a だと配列の宣言になる。基本的に宣言なしで変数は使えるけど、連想配列は絶対に宣言しないといけない。
(AA) は連想配列をつくるやつ。(A) だと配列になる。(z) はコマンドラインにそれが書かれたかのようにアンエスケープしながら分割する。: は何もしないコマンド。引数評価だけされる。
エスケープは (q) でできる
foo="aaa (aa) "
echo ${(q)foo} #=> aaa\ \(aa\)\ \
echo ${(qq)foo} #=> 'aaa (aa) '
echo ${(qqq)foo} #=> "aaa (aa) "
echo ${(qqqq)foo} #=> $'aaa (aa) 'foo が空のとき (q) だとなんもなくなるのでまずい。(qq) のほうが安全
man zshall /Parameter Expansion Flags