/ / A função getopts do bash é destrutiva para as opções de linha de comando? - bash, shell

A função getopts bash é destrutiva para as opções de linha de comando? - bash, shell

Você pode usar a função bash "getopts" duas vezes no mesmo script?

Eu tenho um conjunto de opções que significaria diferentescoisas dependendo do valor de uma opção específica. Como não posso garantir que getopts avalie essa opção específica primeiro, gostaria de executar o getopts uma vez, usando apenas essa opção específica, e depois executá-la uma segunda vez usando as outras opções.

Respostas:

4 para resposta № 1

Sim, apenas redefina OPTIND depois.

#!/bin/bash

set -- -1
while getopts 1 opt; do
case "${opt}" in
1) echo "Worked!";;
*) exit 1;
esac
done

OPTIND=1
set -- -2
while getopts 2 opt; do
case "${opt}" in
2) echo "Worked!";;
*) exit 1;
esac
done

1 para resposta № 2

O getopts não modifica os argumentos originais, ao contrário do antigo executável autônomo getopt. Você pode usar os getopts internos bash repetidamente sem modificar sua entrada original.

Veja a página man bash para mais informações.

HTH.

Felicidades,

Roubar