variable script por pasar parámetros parse parametros funciones ejemplos bash getopts

script - pasar parametros por bash



¿Por qué los getopts solo funcionan la primera vez? (1)

Necesita agregar esta línea en la parte superior de su función:

OPTIND=1

De lo contrario, la invocación sucesiva de la función en el shell no restablecerá esto ya que la función se ejecuta en el mismo shell cada vez.

Según la help getopts :

Cada vez que se invoca, getopts colocará la siguiente opción en la variable de shell $name , inicializando el nombre si no existe, y el índice del siguiente argumento a procesar en la variable de shell OPTIND . OPTIND se inicializa a 1 cada vez que se invoca el shell o un script de shell.

¿Por qué esta opción solo funciona la primera vez que se usa y luego se ignora cada dos veces? Es como si se restableciera cuando la opción no se usa.

Aquí está mi función:

testopts() { local var="o false" while getopts "o" option; do case "${option}" in o) var="o true" ;; esac done echo $var }

Al ejecutarlo, solo devuelve verdadero cuando se pasa la opción por primera vez.

$ testopts o false $ testopts -o o true $ testopts -o o false