次の例では:
function zp () {
zparseopts -E -walk:=o_walk
echo "walk: $o_walk"
}
次の結果が表示されます。
$ zp --walk "Walking"
walk : --walk Walking
$ zp --walk
zp:zparseopts:2: missing argument for option: -walk
walk :
このオプションのパラメーターは必須であるため、このエラーが発生します。
--walk
このオプションを必須に設定して他のオプションに渡さない場合にzp
エラーを発生させるにはどうすればよいですか?
答え1
よく分からないがないようzparseopts
で、必須パラメータへの言及だけ見えますね。getopt
マニュアルにのためのzparseopts
。
結果オプションが設定されているかどうかはいつでも手動で確認できます。
function zp () {
if ! zparseopts -E -walk:=o_walk; then
return 1
fi
if [ $#o_walk = 0 ]; then
echo "required option --walk missing" >&2
return 1
fi
echo "walk: $o_walk"
}
ここでzparseopts
オプションが引数なしで指定された場合は失敗し、2番目のオプションは配列に項目があるかどうかを明示的if
にテストします。o_walk
パラメータを収集するために連想配列を使用することもオプションです。
function zp () {
if ! zparseopts -E -A opts -walk: ; then
return 1
fi
if ! [ ${opts[--walk]+x} ]; then
echo "required option --walk missing" >&2
return 1
fi
echo "walk: $opts[--walk]"
}