En Linux, usamos argumentos de línea de comandos como entrada para el script bash. Bash puede tomar estos argumentos de la 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 el manejo de argumentos de línea de comandos en bash es esencial, pero muchos usuarios nuevos necesitan aprender a 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 argumentos de la línea de comandos en Bash, así que echemos un vistazo a ellos 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 integrada de Linux que puede usar al crear un archivo de base de datos o un informe en un formato específico basado en los argumentos. La función getopt ayuda a analizar los argumentos cortos de la línea de comandos porque hay dos tipos de argumentos:
- Argumentos cortos: Estos son los argumentos de un solo carácter seguidos de un guión. Por ejemplo, -a, -l, -h, etc., son algunos ejemplos de argumentos únicos.
- Argumentos largos: Estos son los argumentos de varios caracteres seguidos de un guión doble. Hay varios ejemplos de argumentos largos, como –all, –list, –help, etc.
Tomemos un ejemplo donde manejaremos los argumentos de la línea de comando usando la utilidad getopt. Hemos creado un script bash llamado 'getopt.sh' que contiene la siguiente información:
!/ compartimiento / intento
tiempo obtener opciones 'A B C D:' detalles; hacer
caso ' $detalles ' en
A )
eco 'El nombre del ciudadano es $OPTARG ' ;;
B )
eco 'La identificación de ciudadano es $OPTARG ' ;;
C )
eco 'Lugar de nacimiento es $OPTARG ' ;;
D )
eco 'La ocupación es $OPTARG ' ;;
* )
salida 1 ;;
esac
hecho
cambio ' $(($OPTANDO -1) )'
si [ ! -Con $1 ] ; después
eco 'Estado civil $1'
más
eco 'No entrar'
salida 1
ser
si [ ! -Con $2 ] ; después
eco 'Miembros de la familia $2'
ser
Ahora ejecutemos el script con los argumentos requeridos en la entrada:
Como puede ver en la imagen de arriba, ejecutamos el script solo con funciones getopt y luego agregamos argumentos normales para obtener el resultado completo.
Uso de banderas
Las banderas no son más que caracteres individuales precedidos por guiones (-). Cuando pasamos los argumentos usando la función getopt, usamos banderas. -a, -b, -c son algunos ejemplos de banderas. Por ejemplo, un guión requiere el nombre, la identificación, el lugar, la edad y la ocupación de un ciudadano. Por lo tanto, usamos las banderas 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/bashTiempo obtener opciones j:k:l:m:n: flag_info
hacer
caso ' ${flag_info} ' en
< viejo >
< que > j ) nombre del ciudadano = ${OPTARG} ;; que >
< que > k ) Identificación ciudadana = ${OPTARG} ;; que >
< que > yo ) lugar = ${OPTARG} ;; que >
< que > metro ) años = ${OPTARG} ;; que >
< que > norte ) ocupación = ${OPTARG} ;; que >
viejo >
esac
hecho
eco 'Aquí están los detalles ingresados:'
eco 'Nombre del ciudadano: $nombre del ciudadano ' ;
eco 'Identificación ciudadana: $ciudadanoid ' ;
eco 'Lugar: $lugar ' ;
eco 'Años: $edad ' ;
eco 'Ocupación: $ocupación ' ;
El script dará el siguiente resultado en la terminal:
. /< guion > .sh -j dany -k 476 -l toronto -metro 25 -norte Autor
Usando [correo electrónico protegido] con bucles
Los ' [correo electrónico protegido] La variable no es más que la matriz de todos los argumentos de entrada. Podemos pasar cualquier número de entradas usando el ' [correo electrónico protegido] ' variable. Puede usar esta variable como un bucle para iterar a través de los argumentos. Los ' [correo electrónico protegido] La variable ” viene muy bien entonces; no conoce el tamaño de entrada y no puede tomar los argumentos posicionales. Por lo tanto, puede utilizar el ' [correo electrónico protegido] ” en lugar de definir la función getopt una y otra vez. Aquí hay un ejemplo del uso de bucles y [correo electrónico protegido] juntos en un guión:
#!/bin/bashen uno = ( “$ @ ” )
si [ $# -gt 1 ]
después
agregar =$ ( ( ${número[0]} + ${número[1]} ) )
eco 'La suma de todos los números es: $añadir '
sustracción =$ ( ( ${número[0]} - ${número[1]} - ${número[2]} ) )
eco 'La resta de los números es: $resta '
multiplicar =$ ( ( ${número[0]} * ${número[1]} * ${número[2]} ) )
eco 'La multiplicación de los números es: $multiplicar '
división 1 =$ ( ( ${número[0]} / ${número[1]} ) )
eco 'División de la ${número[0]} y ${número[1]} es: $división1 '
division2 =$ ( ( ${número[1]} / ${número[2]} ) )
eco 'Division de ${número[1]} y ${número[2]} es: $división2 '
division3 =$ ( ( ${número[0]} / ${número[2]} ) )
eco 'Division de ${número[0]} y ${número[2]} es: $división2 '
ser
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 entrada:
Uso de parámetros posicionales
Puede acceder a los parámetros posicionales a medida que acceden primero a $1, luego a $2, y así sucesivamente. Por ejemplo, creemos un script que lea un nombre como primer argumento y luego una ciudad como segundo. Sin embargo, si pasa primero la ciudad y luego el nombre, entonces considera el nombre como la ciudad y viceversa. Profundicemos más en el siguiente script para comprender este concepto:
#!/bin/basheco 'Aquí están los detalles ingresados'
eco 'nombre $1'
eco '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 obtener más información sobre ellos.