Como posso usar “getopts” sem um parâmetro? (aqui para "-v")

0

Como posso usar o getopts sem um parâmetro?

while getopts ":a:f:l:r:h:v:" arg; do
   printf $arg
   case $arg in
     a)
        add_param=${OPTARG}
        ;;
     f)
        file_param=${OPTARG}
        ;;
     l)
        list_param=${OPTARG}
        ;;
     r)
       remove_param=${OPTARG}
       ;;
     v)
       version_param="version"
       printf "hello world"
       ;;
     h | *)
       print_usage
       exit_script
   esac
done

Eu nunca entro no caso -v se eu executar meu script assim sh script.sh -v porque esta implementação espera um parâmetro.

Você pode me ajudar a consertar isso?

    
por m1well 24.08.2017 / 01:30

1 resposta

1

De help getopts (em bash ):

getopts: getopts optstring name [arg]
    Parse option arguments.

    Getopts is used by shell procedures to parse positional parameters
    as options.

    OPTSTRING contains the option letters to be recognized; if a letter
    is followed by a colon, the option is expected to have an argument,
    which should be separated from it by white space.

Eu acho que é válido também para sh . Você deve tentar ":a:f:l:r:hv" em vez de ":a:f:l:r:h:v:" .

    
por 24.08.2017 / 01:47