Cómo pasar argumentos a un Bash-Script

Cómo pasar argumentos a un Bash-Script

Cómo pasar argumentos a un Bash-Script

VALORACIÓN DEL ARTÍCULO:
5/5


Puede escribir un script de bash para que pueda recibir los argumentos especificados cuando se llama el script desde la línea de comandos. Este método se utiliza cuando un script tiene que realizar una función ligeramente diferente dependiendo de los valores de los parámetros de entrada (los argumentos).

Ejemplo de cómo pasar argumentos en un guión de bash

Digamos que tienes un script llamado stats.sh que cuenta las palabras de un archivo. Si desea poder usar ese script en muchos archivos, es mejor pasar el nombre del archivo como argumento para poder usar el mismo script para todos los archivos a procesar. Por ejemplo, si el nombre del archivo a procesar es songlist, deberá introducir la siguiente línea de comandos:

sh stats.sh songlist

Los argumentos son accedidos dentro de un script usando las variables $1, $2, $3, etc., donde $1 se refiere al primer argumento, $2 al segundo, y así sucesivamente. Esto se ilustra en el siguiente ejemplo:

FILE1=$1
wc $FILE1

Para facilitar la lectura, asigne una variable con un nombre descriptivo al valor del primer argumento ($1), y luego llame a la utilidad de recuento de palabras (wc) en esta variable $FILE1.

Si tiene un número variable de argumentos, puede usar la variable $@, que es una matriz de todos los parámetros de entrada. Esto significa que puede utilizar un for-loop para procesar cada uno de ellos de forma iterativa, como se ilustra en el siguiente ejemplo:

para FILE1 en "$@"
>>>>Para FILE1 en "$@"
".do
wc $FILE1
terminado

He aquí un ejemplo de cómo llamar a este script con argumentos desde la línea de comandos:

sh stats.sh songlist1 songlist2 songlist3

Si un argumento tiene espacios, debe encerrarlo con comillas simples. Por ejemplo:

pre>sh stats.sh 'songlist 1' 'songlist 2' 'songlist 3' 'songlist 3'

sh stats.sh 'songlist 1' 'songlist 2' 'songlist 3' 

sh stats.sh 

sh stats.sh 'songlist 3

Método de las banderas

Frecuentemente se escribe un script de tal manera que el usuario puede pasar argumentos en cualquier orden usando banderas. Con el método flags, también puede hacer que algunos de los argumentos sean opcionales.

Digamos que tiene un script que recupera información de una base de datos basada en parámetros específicos, como "nombre de usuario", "fecha" y "producto", y genera un informe en un "formato" específico. Ahora quieres escribir tu guión para que puedas pasar estos parámetros cuando el guión sea llamado. Podría parecerse a esto:

makereport -u jsmith -p cuadernos -d 10-20-2011 -f pdf

Bash permite esta funcionalidad con la función getopts. Para el ejemplo anterior, puede utilizar getopts de la siguiente manera:

mientras que getopts u:d:p:f: opción
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ido
caso "${opción}"
en
u) USER=${OPTARG};;
d) DATE=${OPTARG};;
p) PRODUCT=${OPTARG};;
f) FORMAT=$OPTARG;;
esac
terminado

Se trata de un bucle de tiempo que utiliza la función getopts y una llamada optstring, en este caso "u:d:p:f:"-para iterar a través de los argumentos. El bucle while-loop recorre el optstring, que contiene los indicadores que se pueden utilizar para pasar argumentos, y asigna a la variable "option" el valor del parámetro proporcionado para ese indicador. La case-statement entonces asigna el valor de la variable "option" a una variable global que puede ser usada después de que todos los argumentos hayan sido leídos.

Significado de los dos puntos

Los dos puntos en la cadena de caracteres significan que se requieren valores para los indicadores correspondientes. En el ejemplo anterior "u:d:p:f:" todas las banderas van seguidas de dos puntos. Esto significa que todos los indicadores necesitan un valor. Si, por ejemplo, no se esperaba que los indicadores "d" y "f" tuvieran un valor, "u:dp:f" sería la cadena de texto.

Los dos puntos al principio de la cadena (por ejemplo ":u:d:p:f:") tienen un significado completamente diferente. Le permite manejar banderas que no están representadas en la cadena de texto. En ese caso, el valor de la variable "option" se fija en "? y el valor de "OPTARG" se fija en el indicador inesperado. Esto le permite visualizar un mensaje de error adecuado que informa al usuario del error.

Los argumentos que no están precedidos por una bandera son ignorados por los getopts. Si las banderas especificadas en la optstring no se proporcionan cuando se llama el script, entonces no pasa nada, a menos que maneje especialmente este caso en su código. Cualquier argumento que no sea manejado por getops puede ser capturado con las variables regulares de $1, $2, etc.

TAMBIÉN TE INTERESA

SPC Care

Así funciona SPC Care, la primera app de cuidado de personas mayores en remoto

Presentada en 2024, SPC Care es la primera app en España de cuidado a distancia de los mayores. La solución, exclusiva de la marca para dispositivos SPC, permite a cuidadores y familiares de personas mayores controlar de forma remota el teléfono móvil del usuario sénior mediante la gestión de la completa totalidad de los parámetros del dispositivo para facilitar

Peugeot-ChatGPT

Ok Peugeot: un año de idilio entre Peugeot-ChatGPT

Para quien aún no lo sepa, ChatGPT no solo está presente en el móvil y en el ordenador, sino también en los coches. Desde el matrimonio Peugeot-ChatGPT, la firma francesa cumple su primer aniversario con esta herramienta con resultados muy satisfactorios. La marca fue una de las primeras del sector en integrar la Inteligencia Artificial

Apple-iPad-Air con chip M3

Apple lanza el iPad Air con chip M3 y Apple Intelligence

Apple ha presentado la nueva generación del iPad Air con chip M3, una actualización que mejora significativamente el rendimiento, la eficiencia y la experiencia del usuario. La llegada del chip M3 y la integración de Apple Intelligence convierten a esta tableta en una opción aún más potente y versátil. Con dos tamaños de pantalla, compatibilidad

componentes tecnología

Memoria RAM en tu smartphone: ¿cuanta más mejor?

A la hora de comprar un nuevo teléfono, la elección de la memoria RAM en tu smartphone dice muchas cosas sobre el uso que le vayas a dar a tu dispositivo. Junto a este componente, las otras opciones por las que un móvil es más seductor para el consumidor son su cámara, el diseño, la