Ksh built-in getopts não executando o bloco caso correto para uma opção

0

quando eu corro abaixo do código com a opção p e sem parâmetros, ele vai para outras opções onde como deve executar a declaração de impressão do caso p). o que precisa ser corrigido

Além disso, eu quero que o código execute h | *) bloco quando nenhuma opção é dada. Como conseguir isso.

Código:

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

Execução:

[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
    
por Su_scriptingbee 23.10.2017 / 10:56

1 resposta

2

Você deve usar h|* ) como o último bloco de casos, porque ele corresponde a qualquer coisa antes de verificar -p .

    
por 23.10.2017 / 11:04

Tags