/ / ¿Es bash la función getopts destructiva para las opciones de línea de comandos? - bash, shell

¿La función bash getopts es destructiva para las opciones de la línea de comando? - Bash, concha

¿Se puede usar la función bash "getopts" dos veces en el mismo script?

Tengo un conjunto de opciones que significaría diferenteCosas dependiendo del valor de una opción específica. Como no puedo garantizar que getopts evalúe primero esa opción específica, me gustaría ejecutar getopts una vez, usando solo esa opción específica, y luego ejecutarlo una segunda vez usando las otras opciones.

Respuestas

4 para la respuesta № 1

Sí, solo reinicie OPTIND después.

#!/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 la respuesta № 2

getopts no modifica los argumentos originales, a diferencia del antiguo archivo ejecutable independiente getopt. Puede usar los getopts integrados de bash una y otra vez sin modificar su entrada original.

Vea la página de manual de bash para más información.

HTH.

aclamaciones,

Robar