Mas não é isso que está sendo solicitado a combinar. O problema não tem nada a ver com case
e tudo com getopt
e set
antes.
Embora o bloco caso ainda verifique o mesmo $1
, ele não está mais recebendo apenas o parâmetro da linha de comando. O comando anterior set
substituiu os parâmetros originais pela saída do programa getopt , que geralmente se parece com -- "g"
.
Esse parâmetro extra --
é inserido por getopt para indicar que as opções são interrompidas neste ponto e os argumentos não opcionais começam. Esse é todo o propósito de getopt - classificar e separar os diferentes tipos de argumentos da linha de comando.
Se você adicionar esta linha, ela deve se tornar óbvia:
while true; do
+ echo "arg 1 is '$1'"
case "$1" in