Comando getopts en Linux con ejemplos

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

getopts syntax

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.

getopts help

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:

  1. 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.
  2. Cada letra de opción seguida de dos puntos espera un argumento, que se almacena en la variable OPTARG .
  3. Si getopts esperaba un argumento, pero no pudo analizarlo, imprime un error. Si no esperaba uno, OPTARG se inicializará a «» (una string vacía).
  4. 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

getopts pass argument as exception

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

getopts skipping the parameter for a flag where it is required

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

Adding a flag not present in the optstring

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

Skipping the parameter for a flag where it is required

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *