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

関連情報