BASH getopts OPTARG indefinido

1

Eu tenho este código, e quando eu o chamo na linha de comando, ele mostra a opção echo in / a que eu tenho em cada opção / mas $ OPTARG é indefinida. E eu não tenho ideia do porquê.

   OPTIND=1
    optm=
    optl=
    while getopts "ml:" opt
    do
    case "$opt" in
    m)
    optm=$OPTARG
    echo "m was triggered"
    ;;
    l)
    moznostl=$OPTARG
echo "l was triggered"
    ;;
   esac
   done
   shift "$((OPTIND-1))"

e minha segunda pergunta é: %código% isso pode ser usado para começar com o segundo argumento? Quer dizer, funciona, mas é uma maneira legítima de fazer isso. por exemplo:

./project first -l second 

para pular o primeiro argumento e começar com -l?

    
por applenic 19.03.2015 / 12:17

1 resposta

1

Você tem essa linha

while getopts "ml:" opt

Isso informa ao shell que m pode existir, mas não usa nenhum parâmetro e que l pode aparecer com exatamente um parâmetro.

Suspeito que você quisesse usar getopts 'm:l' opt .

    
por 19.03.2015 / 13:34

Tags