Sua expansão de "$@"
acontece no início do ciclo for
; o shift
dentro dele não terá impacto.
por exemplo
for a in "$@"
do
echo OPTION: $a
shift 2
done
Com isso:
$ bash x a b c d e f
OPTION: a
OPTION: b
OPTION: c
OPTION: d
OPTION: e
OPTION: f
Podemos ver que o shift
não está fazendo nada
Em vez disso, você deseja reavaliar cada vez:
$ cat x
while [ $# -gt 0 ]
do
a="$1"
echo OPTION: $a
shift 2
done
$ bash x a b c d e f
OPTION: a
OPTION: c
OPTION: e
(Você precisa fazer um teste melhor que este; este código de exemplo nunca termina se você passar um número ímpar de argumentos porque o shift 2
falha)