zparseopts で posix style long option と一文字オプションを両立させる
Zsh の zparseopts を使って
-t TYPE
--type TYPE
--type=TYPE
全部の書き方をサポートしたい場合にどう書くか。 (代入先の配列名を同じにするだけ、だけど)
値の取り出しの書き方を忘れがちなので、メモ。
(我流なので、ツッコミ歓迎です)
zparseopts がどう働くか
% set -- -t foo % zparseopts -D -K h=o_help t:=o_type % typeset o_type o_type=( -t foo ) %
% set -- --type foobar % zparseopts -D -K h=o_help t:=o_type -type:=o_type % typeset o_type o_type=( --type foobar ) %
% set -- --type=foobar % zparseopts -D -K h=o_help t:=o_type -type:=o_type % typeset o_type o_type=( --type '=foobar' ) %
オプションの検査
配列のサイズを見るのが、良いのではないかと…
if (($#o_type)); then # …オプションが指定されている時の処理… fi
値の取り出し
値の先頭が = で始まる =なんとか
みたいな文字列を渡すことを諦めれば
↓この書き方で行ける。
% print -- $o_type[2] =foobar % print -- ${${o_type[2]}#=} foobar %
.oO(…もっと短く覚えやすい書き方があれば、是非教えて下さい…)