Cómo manejar los argumentos de la línea de comandos en Bash?

Cómo manejar los argumentos de la línea de comandos en Bash?

En Linux, utilizamos argumentos de línea de comandos como entrada para el script bash. Bash puede tomar estos argumentos de línea de comandos secuencialmente y analizarlos como una opción. Estos argumentos le permiten afectar las acciones y la salida del script dinámicamente.

Puede configurar estos argumentos de manera diferente para influir en la entrada y la salida. Es por eso que manejar la línea de comandos args en bash es esencial, pero muchos usuarios nuevos necesitan aprender cómo hacerlo. Entonces, en esta guía, explicaremos diferentes formas de manejar los argumentos de la línea de comandos en Bash.

Cómo manejar los argumentos de la línea de comandos en Bash?

Hay varias formas de manejar los args de la línea de comandos en Bash, así que echemos un vistazo para obtener información breve:

La función getopt

La función getopt es útil, ya que proporciona las opciones y la sintaxis para definir y analizar argumentos en Bash. Es una función incorporada de Linux que puede usar al crear un archivo de base de datos o informar en un formato específico basado en los argumentos. La función Getopt ayuda a analizar los argumentos de línea de comandos cortos porque hay dos tipos de argumentos:

  • Argumentos breves: Estos son los argumentos de un solo personaje seguidos de un guión. Por ejemplo, -a, -l, -h, etc., son algunos ejemplos de argumentos individuales.
  • Argumentos largos: Estos son los argumentos multi-caracteres seguidos de un doble hyphen. Hay varios ejemplos de argumentos largos, como -alL, -list, -help, etc.

Tomemos un ejemplo en el que manejaremos los argumentos de la línea de comando utilizando la utilidad de Getopt. Hemos creado un script bash llamado "getopt.sh ”que contiene la siguiente información:

!/bin/bash
mientras que Getopts 'A: B: C: D:' Detalles; hacer
Caso "$ Detalles" en
A)
echo "el nombre ciudadano es $ Optarg" ;;
B)
echo "La identificación ciudadana es $ Optarg" ;;
C)
echo "El lugar de nacimiento es $ Optarg" ;;
D)
echo "La ocupación es $ Optarg" ;;
*)
salida 1 ;;
ESAC
hecho
turno "$ (($ optind -1))"
si [ ! -z $ 1]; entonces
Echo "Estado civil $ 1"
demás
echo "sin entradas"
Salir 1
FI
si [ ! -z $ 2]; entonces
Echo "Miembros de la familia $ 2"
FI

Ahora ejecutemos el script con los argumentos requeridos en la entrada:

Como puede ver en la imagen de arriba, solo ejecutamos el script con funciones de getopt solamente y luego agregamos argumentos normales para obtener el resultado completo.

Usando banderas

Las banderas no son más que personajes individuales precedidos por Hyphens (-). Cuando pasamos los argumentos utilizando la función Getopt, usamos banderas. -a, -b, -c son algunos ejemplos de banderas. Por ejemplo, un guión requiere un nombre, identificación, lugar, edad y ocupación de un ciudadano. Por lo tanto, usamos Flags J, K, L, M, N, para definir el nombre, la identificación, el lugar, la edad y la ocupación del ciudadano simultáneamente:

#!/bin/bash
Mientras Getopts J: K: L: M: N: Flag_info
hacer
caso "$ flag_info" en

  1. j) CitizenName = $ Optarg ;;

  2. k) ciudadenID = $ optarg ;;

  3. l) lugar = $ OPTARG ;;

  4. m) edad = $ optarg ;;

  5. n) ocupación = $ Optarg ;;


ESAC
hecho
Echo "Aquí están los detalles ingresados:"
echo "Nombre ciudadano: $ Citizenname";
echo "ID de ciudadano: $ ciudadenida";
echo "lugar: $ place";
echo "edad: $ edad";
echo "Ocupación: $ Ocupación";

El script dará el siguiente resultado en el terminal:

.//

Usando $@ con bucles

La variable "$@" no es más que la matriz de todos los argumentos de entrada. Podemos pasar cualquier número de entradas usando la variable "$@". Puede usar esta variable como bucle para iterar a través de los argumentos. La variable "$@" es útil entonces; No conoce el tamaño de la entrada y no puede tomar los argumentos posicionales. Por lo tanto, puede usar el "$@" en lugar de definir la función getopt una y otra vez. Aquí hay un ejemplo de uso de bucles y $@ juntos en un script:

#!/bin/bash
num = ("$@")
Si [$# -gt 1]
entonces
add = $ (($ num [0]+$ num [1])))
echo "La adición de todos los números es: $ add"
subtracción = $ (($ num [0]-$ num [1]-$ num [2])))
echo "La resta de los números es: $ subtracción"
multiply = $ (($ num [0]*$ num [1]*$ num [2])))
echo "La multiplicación de los números es: $ Multiply"
division1 = $ (($ num [0]/$ num [1])))
echo "División de $ num [0] y $ num [1] es: $ Division1"
division2 = $ (($ num [1]/$ num [2])))
echo "División de $ num [1] y $ num [2] es: $ Division2"
division3 = $ (($ num [0]/$ num [2])))
echo "División de $ num [0] y $ num [2] es: $ Division2"
FI

El script anterior realiza diferentes cálculos aritméticos basados ​​en los argumentos de la línea de comandos. Por ejemplo, hemos ingresado 50, 35 y 15 como la entrada:

Usando parámetros posicionales

Puede acceder a los parámetros posicionales a medida que acceden primero a $ 1, luego $ 2, y así sucesivamente. Por ejemplo, creemos un script que lea un nombre como el primer argumento y luego una ciudad como la segunda. Sin embargo, si pasa la ciudad primero y luego el nombre, considera el nombre como la ciudad y viceversa. Llegemos una inmersión más profunda en el siguiente guión para comprender este concepto:

#!/bin/bash
echo "Aquí están los detalles ingresados"
Echo "Nombre $ 1"
Echo "Ciudad $ 2"

Debe agregar el nombre y la ciudad al momento de ejecutar el script en la terminal:

Terminando

Esto es todo lo que necesita saber sobre los métodos para manejar los argumentos de la línea de comandos en Bash. Hemos explicado diferentes enfoques que puede probar con los ejemplos apropiados. Hay varios comandos si desea agregar argumentos en el script. Así que asegúrese de visitar Linuxhint para aprender más sobre ellos.