Se uma função ou aplicativo tiver mais de zero argumentos, ele sempre terá um último argumento.
Se você deseja ler os pares de sinalizador e valor de opção, como em:
$ ./t.sh -o output -i input -l last
E você deseja aceitar um número variável de pares de opção / valor,
E não quero uma árvore enorme "se .. então .. mais .. fi",
Depois de verificar uma contagem de argumentos diferente de zero e par,
Escreva um loop while com essas quatro instruções eval como o corpo, seguido de uma instrução case usando os dois valores determinados em cada passagem pelo loop.
A parte complicada do script é demonstrada aqui:
#!/bin/sh
# For each pair - this chunk is hard coded for the last pair.
eval TMP="'$'$#"
eval "PICK=$TMP"
eval TMP="'$'$(($#-1))"
eval "OPT=$TMP"
# process as required - usually a case statement on $OPT
echo "$OPT \n $PICK"
# Then decrement the indices (as in third eval statement)
:<< EoF_test
$ ./t.sh -o output -i input -l last
-l
last
$ ./t.sh -o output -l last
-l
last
$ ./t.sh -l last
-l
last
EoF_test