getopts es una utilidad de secuencia de comandos bash muy conveniente, que lo ayuda a manejar de manera conveniente y elegante el paso de indicadores (versión corta) y argumentos de una manera limpia y estandarizada. En lugar de que el desarrollador maneje manualmente las banderas pasadas a un script, esto proporciona una forma práctica de manejar esto cuando se itera a través de un ciclo while.
Prerrequisitos: Se recomienda tener una idea básica de los siguientes temas:
- Comprensión básica del script bash.
- Banderas en bash.
- Argumentos en bash.
Sintaxis:
getopts optstring name [arg]
Para obtener la sintaxis a través de la terminal:
getopts
Trabajando con el comando getopts
1. Impresión de la sección de ayuda: Ingrese el siguiente comando para imprimir la sección de ayuda del comando getopts.
getopts --help
El comando anterior imprimirá los detalles del comando junto con algunos parámetros y opciones que podrían usarse para ejecutar el comando.
2. Uso en un script: getopts también podría usarse en un script en Linux. El siguiente script muestra lo mismo.
#!/bin/bash while getopts ":a:bc:" flag;do echo "flag -$flag, Argument $OPTARG"; done
Este script ejecuta un bucle while, que itera a través de los argumentos que coinciden con la string de opciones dada, en este caso, «a:bc:», y almacena el valor de la bandera en la variable flag . Si la bandera tenía algún argumento asociado, se almacena en una variable OPTARG .
El optstring funciona de la siguiente manera:
- Para cada letra de opción, getopts almacena la opción en el indicador de variable (declarado justo después de la string de opción) e itera el ciclo.
- Cada letra de opción seguida de dos puntos espera un argumento, que se almacena en la variable OPTARG .
- Si getopts esperaba un argumento, pero no pudo analizarlo, imprime un error. Si no esperaba uno, OPTARG se inicializará a «» (una string vacía).
- Si el primer carácter de la string de opciones era “:” (dos puntos), el mensaje de error no se imprime
3. Ejecutar el script pasando los argumentos como se esperaba.
./getoptsDemo.sh -a argA -b
Nota: OPTARG para -b está en blanco y no es su valor anterior, ya que se inicializa para cada iteración. Además, no se pasa -c, lo cual no es un problema, ya que cada bandera en optstring es opcional.
4. Ejecutar el script omitiendo el parámetro de un indicador donde se requiere: Esto imprime un mensaje de error. El indicador se inicializa en «?», y OPTARG es «.
./getoptsDemo.sh -a
5. Ejecutar el script agregando un indicador que no está presente en la string de opción: Esto imprime un mensaje de error. Nuevamente, la bandera se inicializa en «?», y OPTARG es «».
./getoptsDemo.sh -d
Si el primer carácter era “:”, getopts entra en modo silencioso, los mensajes de error no se imprimen y el comportamiento cambia en algunos casos. Considere la string opcional «:a» para el siguiente ejemplo:
6. Omitir el parámetro de un indicador donde se requiere: El indicador se inicializa en «:» y OPTARG se establece en el carácter de opción.
./getoptsDemo.sh -a
Publicación traducida automáticamente
Artículo escrito por joshi_arihant y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA