getopts
with 절을 사용할 case
때 *)
마지막 패턴 절인 패턴 절은 \?)
마지막 두 패턴 절인 and 패턴 절과 동일합니까? :)
구체적으로,
while getopts "<optionString>" opt; do
case $opt in
a) a="$OPTARG"
;;
b) b="$OPTARG"
;;
...
;;
\?) printf "illegal option: -%s\n" "$OPTARG" >&2
exit 1
;;
:) printf "missing argument for -%s\n" "$OPTARG" >&2
exit 1
;;
esac
done
그리고
while getopts "<optionString>" opt; do
case $opt in
a) a="$OPTARG"
;;
b) b="$OPTARG"
;;
...
;;
*) printf "illegal option: -%s, or missing argument for -%s\n" "$OPTARG" "$OPTARG" >&2
exit 1
;;
esac
done
감사해요.
답변1
자동 오류 보고를 사용하는 경우(의 첫 번째 문자가 콜론인 경우) 실제로는 합계만 확인하면 :
됩니다 ?
.getopts
bash
optstring
이 방법으로 사용하지 않으면 getopts
유효하지 않은 옵션과 누락된 옵션 인수에 대한 자체 진단 메시지를 생성합니다(대개 이것으로 충분합니다). 실제로, Silent되지 않는 한 변수에 배치 :
되거나 ?
변수에 포함되지 않습니다.
Case 문을 사용하는 것은 *
두 경우를 모두 포착하는 한 가지 방법이지만, getopts
음소거된 경우 어떤 오류가 발생했는지 알 수 없으며 an error occurred while parsing the command line options
사용자에게만 말할 수 있습니다.