Bash Getopts

Bash Getopts
A veces necesitamos leer argumentos y opciones de la línea de comandos en scripts bash. Los argumentos de la línea de comandos se pueden leer fácilmente mediante variables de argumento. Pero para leer tanto los argumentos y opciones de la línea de comando, Bash usó un comando incorporado 'getopts'. Este comando se puede utilizar para analizar opciones cortas como '-a' o '-1' y opciones largas como '-Package-Name'. Cómo se puede usar el comando 'getopts' para analizar los argumentos y las opciones de la línea de comandos se muestran en este tutorial utilizando diferentes ejemplos.

Sintaxis:

Nombre de OptString de Getopts [Args]

Opciones:

Algunas opciones de getopts usadas en su mayoría se mencionan aquí.

Etiqueta Descripción
-O o opciones Identificar la opción de un personaje.
-l o -longoptions Identificar opciones de varios personajes.
-n o -name Informar errores provenientes del comando getopts
-Q o -quiet Desactivar informes de errores
-T o -test Prueba de la versión Getopts
-a o alternativo Permitir una opción larga con '-'

Ejemplo-1: usando un solo opción

Este ejemplo muestra el uso muy simple del comando getopts. Cree un archivo bash llamado 'getOpts1.sh 'con el siguiente código para probar el código. Aquí, mientras Loop continuará para la opción del comando getopts. La declaración de casos verificará la opción. Si la opción es 'C', entonces el script imprimirá 'mi color favorito es el azul'. Si la opción es 'F', el guión imprimirá 'mi comida favorita es el helado'. Si la opción es '-m', el guión imprimirá 'mi película favorita es Titanic'. Para cualquier otro valor de opción, "debe usar: [-c] o [-f] o [-m]" se imprimirá.

#!/bin/bash
# Lea la opción y almacene en la opción Variable, $
mientras que la opción "CFM" de GetOpts; hacer
caso $ opción en
c) #para la opción C
Echo "Mi color favorito es el azul"
;;
f) #para la opción F
Echo "Mi comida favorita es el helado"
;;
m) #para la opción M
Echo "Mi película favorita es Titanic"
;;
\? ) #Para la opción inválida
echo "Tienes que usar: [-c] o [-f] o [-m]"
;;
ESAC
hecho

Ejecute el script usando cuatro opciones, '-c', '-f', '-m' y '-k'.

$ bash getopts1.SH -C
$ bash getopts1.SH -F
$ bash getopts1.sh -m
$ bash getopts1.sh -k

Producción:

Ejemplo-2: Uso de la opción con un solo argumento

Este ejemplo muestra el uso del comando getopts con un argumento. Cree un archivo bash llamado 'getOpts2.sh 'con el siguiente código para probar el código. Aquí, ':' se usa con 'P' para definir que el comando se argumentará con la opción. El script imprimirá el valor del argumento con otra cadena si el argumento con la opción '-p' proporciona en el momento de ejecución. Si alguna opción proporcionará en lugar de '-p', mostrará un mensaje de error con el valor de la opción. Si la opción '-p' proporcionará sin ningún argumento, otro mensaje de error se imprimirá.

#!/bin/bash
Mientras getopts "P:" Opt; hacer
caso $ opt en
p) #Print el valor del argumento
Echo "Me gusta la programación de $ Optarg"
;;
\? )
#Error de opción de impresión
echo "Opción inválida: $ Optarg" 1> y 2
;;
:)
#Error de argumento de huella
echo "Opción inválida: $ Optarg requiere un argumento" 1> y 2
;;
ESAC
hecho

Ejecute el script con la opción -p y el valor de argumento 'bash', con solo opción -p y con la opción -t.

$ bash getopts2.SH -P BASH
$ bash getopts2.SH -P
$ bash getopts2.SH -T

Producción:

Ejemplo-3: Uso de la opción con múltiples argumentos

Este ejemplo muestra los usos del comando getopts con múltiples argumentos. Crea un script bash llamado GrtoPts3.SH con el siguiente código para probar el script. Según el script, los valores de argumentos separados por coma se proporcionarán desde la línea de comando.

Aquí, la opción '-f' y la variable IFS se utilizan para dividir los argumentos y almacenados en una matriz, $ numarr. Si los argumentos separados por comas se proporcionarán, imprimirá el número total de argumentos. Dos opciones admitirán el comando. La suma de los valores del argumento se calculará e imprimirá si la opción '-A' proporcionará los argumentos. La multiplicación de los valores de argumento se calculará e imprimirá si la opción '-m' proporcionará los argumentos.

#!/bin/bash
mientras que getopts "A: M:" Opt; hacer
establecer -f; Ifs = ','
numarr = ($ 2)
echo "Número total de argumentos = $ #numarr [@]"
caso $ opt en
a) resultado = 0
para i en "$ numarr [@]"; hacer
((resultado = $ resultado+$ i))
hecho
echo "La suma de todos los argumentos = $ resultado" ;;
m) resultado = 1
para i en "$ numarr [@]"; hacer
((resultado = $ resultado*$ i))
hecho
echo "La multiplicación de todos los argumentos = $ resultado" ;;
*) echo "opción o argumento no válido"
Salir 1
ESAC
hecho

Ejecute los scripts con la opción '-a' y tres argumentos, con la opción '-m' y tres argumentos y la opción '-t' sin ningún argumento.

$ bash getopts3.sh -A 3,2,5
$ bash getopts3.SH -M 3,2,5
$ bash getopts3.SH -T

Producción:

Ejemplo-4: Uso de múltiples opciones y argumentos

Este ejemplo muestra el uso del comando getopts con múltiples opciones y múltiples argumentos. Cree un archivo bash llamado 'getOpts4.SH con el siguiente código para probar el ejemplo. Aquí, dos opciones funcionarán con dos argumentos por separado. Si ninguna de las opciones proporcionará, se imprimirá un mensaje de error.

#!/bin/bash
mientras que getopts "n: m:" opt; hacer
caso $ opt en
norte)
#Leer primer argumento
echo "El nombre del estudiante es $ Optarg"> y 2
;;
metro)
#Leyendo segundo argumento
echo "y las marcas son $ optarg"> y 2
;;
*)
#Mensaje de error de impresión
echo "Opción o argumento no válido $ Optarg"
;;
ESAC
hecho

Cuando el script se ejecutará por la opción '-n' con la opción 'Ella' y '-M' con 85, entonces dos declaraciones de caso verdaderas e imprimirán dos salidas. Cuando el script se ejecutará solo por la opción '-n' con 'Ella', solo una instrucción de caso verdadera e imprimirá una salida. Cuando el script se ejecuta por la opción '-p', entonces se imprimirá un mensaje de error.

$ bash getopts4.sh -n Ella -M 85
$ bash getopts4.sh -n Ella
$ bash getopts4.sh -p Ella

Conclusión

Los usos básicos del comando 'getopts' se muestran en este tutorial utilizando los ejemplos anteriores. Esperanza, después de practicar este tutorial, podrá usar opciones de línea de comandos y argumentos en su script bash.