다음 예에서는:
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
옵션이 인수 없이 제공되면 실패하고 두 번째 옵션 은 배열에 항목이 있는지 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]"
}