Argumentos de la línea de comandos

Argumentos de la línea de comandos
En muchos casos, los scripts bash requieren valores de argumentos para proporcionar opciones de entrada al script. Puede manejar los argumentos de la línea de comandos en un script bash de dos maneras. Uno es usando variables de argumento, y otro es usando los getopts función. Cómo puede manejar los argumentos de la línea de comandos se muestra en este tutorial.

Usando variables de argumento:

La variable de argumento comienza desde $ 0. El nombre del archivo de script principal se almacena en $ 0, que recibe valores de argumentos de los argumentos de la línea de comandos. Si se pasan dos argumentos en la línea de comandos, entonces secuencialmente, los valores de argumento se recibirán en variables de $ 1 y $ 2.

Ejemplo -1: Enviar tres valores numéricos en los argumentos de la línea de comando

Crear un archivo bash con el siguiente script. El script recibirá valores de tres argumentos y los almacenará en variables de $ 1, $ 2 y $ 3. Contará el número total de argumentos y valores de argumentos imprimidos usando un bucle sin un bucle. La suma de todos los valores de argumento se imprimirá más tarde.

#!/bin/bash
# Cuenta el número total de argumentos
echo "Número total de argumentos: $#"
# Leer valores de argumentos individualmente
echo "Valor de primer argumento: $ 1"
echo "Valor de segundo argumento: $ 2"
Echo "Tercer valor de argumento: $ 3"
# Lectura de valores de argumentos usando bucle
para Argval en "$@"
hacer
echo -n "$ Argval"
hecho
# Agregar valores de argumentos
suma = $ (($ 1+$ 2+$ 3))
# Imprimir el resultado
echo -e "\ nResult of Sum = $ sum"

La siguiente salida aparecerá después de ejecutar el archivo de script con tres valores de argumentos numéricos, 50, 35 y 15.

$ bash cmdline1.sh 50 35 15

Ejemplo -2: Tomar el nombre de archivo como argumento

Cree un archivo bash con el siguiente script para contar el número total de caracteres de cualquier archivo. Aquí, el nombre de archivo se aprobará como un argumento de línea de comandos.

#!/bin/bash
nombre de archivo = $ 1
Totalchar = 'WC -C $ FileName'
Echo "El número total de caracteres es $ Totalchar"

Ejecute el script bash con el nombre de archivo como un valor de argumento único y ejecute otro comando para verificar el número total de caracteres de ese archivo. Aquí, el día de la semana.El archivo txt se usa como valor de argumento. El número total de personajes en el día de la semana.El archivo txt es 57.

$ bash cmdline2.SH lunes a viernes.TXT
$ wc -c de lunes a viernes.TXT

Uso de la función Getopts:

Si desea almacenar datos en la base de datos o en cualquier archivo o crear un informe en un formato particular basado en los valores de los argumentos de la línea de comandos, entonces el getopts la función es la mejor opción para hacer la tarea. Es una función de Linux incorporada. Por lo tanto, puede usar fácilmente esta función en su script para leer datos formateados desde la línea de comandos.

Ejemplo -3: Lectura de los argumentos de la función Getopts

Cree un archivo bash con el siguiente script para comprender el uso de la getopts función. La función de 'getopts' se usa con un bucle de tiempo para leer opciones de argumento de línea de comandos y valores de argumento. Aquí, se utilizan 4 opciones que son 'En m' y 'mi'. La declaración de caso se utiliza para que coincida con la opción particular y almacenar el valor del argumento en una variable. Finalmente, imprima los valores de la variable.

#!/bin/bash
mientras que getopts ": i: n: m: e:" arg; hacer
Caso $ arg en
i) id = $ optarg ;;
n) nombre = $ optarg ;;
m) fabricación_date = $ optarg ;;
e) expire_date = $ optarg ;;
ESAC
hecho
echo -e "\ n $ id $ name $ fabricante_date $ expire_date \ n"

Ejecute el archivo con las siguientes opciones y valores de argumento. Aquí, P100 es el valor de -i opción ','Pastel caliente'es el valor de -n opción',01-01-2021'es el valor de -m opción y'06-01-2021'es el valor de -e opción.

$ bash cmdline3.sh -i p001 -n 'pastel caliente' -m '01 -01-2021 '-e '06 -01-2021'

Cuando necesita enviar valores simples en un script, entonces es mejor usar variables de argumento. Pero si desea enviar datos de manera formateada, es mejor usar la función getopts para recuperar los valores de los argumentos. Los usos de ambas variables de argumento y las opciones de getopts se han mostrado en el siguiente ejemplo.

Ejemplo-4: Leer argumentos y argumentos normales con las opciones de Getopts

Las formas de leer argumentos de línea de comandos utilizando variables de argumento y opciones de getopts se han mostrado por separado en ejemplos anteriores de este tutorial. Pero estas dos formas se pueden usar en un solo script para leer los valores de argumentos de la línea de comandos. Cree un script bash con el siguiente código para leer los valores de argumento de la línea de comandos aprobados por las opciones de getopts y los parámetros de argumento. Aquí, se han utilizado tres opciones de getopts para leer el nombre de host de la línea de comandos, el nombre de usuario y la contraseña. A continuación, el comando de desplazamiento se ha utilizado para eliminar todas las opciones de getopts del comando para leer los valores de la línea de comando usando variables de argumento. Este script leerá e imprimirá un máximo de tres valores de las variables de argumento. Si no se dará ningún valor de argumento sin opción después de ejecutar el código, entonces se imprimirá un mensaje; de lo contrario, los valores de la variable de argumento se imprimirán.

#!/bin/bash
# Leer discusiones con las opciones de getopts
mientras que Getopts 'H: U: P:' Opción; hacer
Caso "$ opción" en
h)
# Imprimir nombre de host
echo "El nombre del host es $ Optarg" ;;
u)
# Imprimir nombre de usuario
echo "El nombre de usuario es $ Optarg" ;;
pag)
# Imprimir contraseña
echo "La contraseña es $ Optarg" ;;
*)
# Imprimir el mensaje de ayuda para proporcionar opciones incorrectas
echo "uso: $ 0 [-h valor] [-u valor] [-p value]"> y 2
# Terminar desde el script
salida 1 ;;
ESAC
hecho
# Eliminar todas las opciones pasadas por las opciones de getopts
turno "$ (($ optind -1))"
# Lectura de los primeros argumentos normales
si [ ! -z $ 1]; entonces
Echo "El primer nombre de la tabla es $ 1"
demás
Echo "No se da ningún argumento normal."
Salir 1
FI
# Leer segundos argumentos normales
si [ ! -z $ 2]; entonces
Echo "El segundo nombre de la tabla es de $ 2"
FI
# Leer el tercer argumento normal
si [ ! -z $ 3]; entonces
echo "El tercer nombre de la tabla es de $ 3"
FI

La siguiente salida aparecerá si la opción incorrecta se da al momento de ejecutar el código. Aquí, la opción -A no existe en el script.

La siguiente salida aparecerá si las opciones válidas con los valores se dan en la línea de comando al momento de ejecutar el código.

La siguiente salida aparecerá si las opciones válidas y los valores de argumento normal se usan en la línea de comando al momento de ejecutar el código. Aquí, los argumentos normales son cliente y empleado.

Usando '$@' para leer argumentos de línea de comandos:

Los argumentos de la línea de comandos se pueden leer sin usar variables de argumento o opciones de getopts. Usando 'ps'Con el primer soporte es otra forma de leer todos los valores de argumentos de la línea de comandos.

Ejemplo-5: Lectura de valores de argumento de la línea de comando sin variable

Cree un archivo bash con el siguiente script para leer los valores del argumento sin ninguna variable de argumento y calcule la suma de tres valores de argumento de línea de comando. "$@" Se ha utilizado con los primeros paréntesis aquí para leer todos los valores de argumentos en una matriz. A continuación, se imprimirá la suma de los primeros tres valores de matriz.

#!/bin/bash
# Lea todos los valores de argumentos
argvals = ("$@")
# Verifique el número total de argumentos
Si [$# -gt 2]
entonces
# Calcule la suma de tres argumentos de línea de comando
sum = $ (($ argvals [0]+$ argvals [1]+$ argvals [2]))
echo "La suma de 3 argumentos de la línea de comandos es $ suma"
FI

La siguiente salida aparecerá después de ejecutar el script anterior para los valores de argumento 12, 20 y 90. La suma de estos números es 122.

Conclusión:

Las formas de proporcionar valores de argumento de línea de comandos sin ninguna opción y con opciones se han mostrado aquí. La forma de leer los valores de argumentos de la línea de comandos sin usar variables también se ha mostrado aquí. Espero que este tutorial ayude a los lectores a usar los valores de argumentos de línea de comandos correctamente en su script bash.