Bash getopts 오류 처리

Bash getopts 오류 처리

Getopts를 플레이하는 동안 발생한 오류입니다. 다음은 스크립트를 실행할 때 3가지 옵션을 간단히 듣기 위해 사용한 코드 조각입니다.

while getopts "vcn" opt; do
  case $opt in
     v) echo "Print V" ;;
     c) echo "Print C" ;;
     n) echo "Print N" ;;
     *) echo "Invalid Option" && exit 1 ;;
  esac 
done

*) 옵션을 사용하여 오류를 처리했는데도 이 스크립트를 실행할 때 다음 오류가 발생하는 이유를 잘 모르겠습니다. 오류 처리기는 아래와 같이 작동하지만 프로그래밍되지 않은 오류가 발생합니다.

터미널의 오류 메시지

답변1

보다참고 도서:

getopts오류는 두 가지 방법으로 보고될 수 있습니다. 첫 번째 문자가 다음과 같은 경우선택적 문자열콜론이며 자동 오류 보고를 사용합니다.정상적인 작업에서는 잘못된 옵션이나 누락된 옵션 인수가 발견되면 진단 메시지가 인쇄됩니다.

잘못된 옵션이 표시되면 getopts다음을 입력하세요 .?이름조용하지 않으면 오류 메시지를 인쇄하고 설정을 취소합니다 OPTARG.자동 인 경우 getopts발견된 옵션 문자가 여기에 배치되고 OPTARG진단 메시지는 인쇄되지 않습니다.

당신에 관한 한,선택적 문자열vcn, getopts오류 메시지가 자동으로 인쇄됩니다. 비활성화하려면 대신 를 사용하십시오 getopts :vcn.

또한 귀하의:

echo "Invalid Option" && exit 1

해야 한다:

echo>&2 "Invalid Option"; exit 1

그건:

  • 오류는 표준 출력이 아닌 표준 오류(파일 설명자 2)로 이동해야 합니다.
  • 그리고 성공만 하는 게 아니라 조건 없이 그만둬야 한다 echo.

관련 정보