Ksh 내장 getopts가 옵션에 대해 올바른 케이스 블록을 실행하지 않습니다.

Ksh 내장 getopts가 옵션에 대해 올바른 케이스 블록을 실행하지 않습니다.

인수 없이 옵션 p를 사용하여 아래 코드를 실행하면 케이스 p)의 인쇄 문을 실행해야 하므로 다른 옵션으로 이동합니다. 고쳐야 할 것

또한 옵션이 제공되지 않을 때 코드가 h|*) 블록을 실행하도록 하고 싶습니다. 구현 방법.

암호:

while getopts ":vhp:" Option; do
  case ${Option} in
    v )
      print -- "${ScriptVersion}" 2>/dev/null
      exit 0
    ;;

    p )
      AbsPackageName="${OPTARG}"
      if [[ -z ${AbsPackageName} ]]; then
        print -- "Missing Information.Please provide Package Name details."
        exit 2
      fi
    ;;

    h|* )
      print -- "USAGE: ${ScriptName} -p [Absolute path of Package Name]" 2>/dev/null
      print -- "Parameter Descriptions:" 2>/dev/null
      print -- "-v ) Script Version" 2>/dev/null
      print -- "-h ) Show this usage message" 2>/dev/null
      exit 0
    ;;

  esac
done

구현하다:

[root@localhost Desktop]# ./pkg2.ksh -p
USAGE: pkg2.ksh -p [Absolute path of Package Name]
Parameter Descriptions:
-v ) Script Version
-h ) Show this usage message

답변1

h|* )이전에 확인한 내용과 일치하므로 이를 마지막 사례 블록으로 사용해야 합니다 -p.

관련 정보