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

impacto-a-la-IA-Generativa-en-el-cloud-privado

El impacto de la IA Generativa en el Cloud Privado

En este artículo indagamos sobre un término que está muy de moda en estos días: la IA Generativa. Además de describir qué y cuál es su potencial, lo vamos a relacionar con el Cloud Privado, ya que estos entornos pueden dar un gran paso adelante gracias a la capacidad de procesamiento y generación de datos

recetas-de-postres

Conviértete en todo un chef con las recetas de cocina de Alexa

El famoso asistente de voz de Amazon puede hacer casi de todo lo que le pidas, incluidas las recetas de cocina de Alexa. Tras cinco años de vida en España, algo más en Estados Unidos, los datos que maneja la compañía indican que muchas personas recurren a Alexa como su ayudante en la cocina, ya

videos-TikTok

TikTok vs. Google: la red social planta cara al buscador rey

Las búsquedas en Internet viven su particular Juego de Tronos. Google siempre ha estado sentado en el Trono de Hierro pero cada vez más familias están pujando por destronar al rey. Sin duda, Microsoft se ha postulado como un digno rival con su navegador Edge y la puesta en marcha de la IA en esta

Zoom-Workplace

Zoom Workplace, la plataforma de trabajo que ha ideado Zoom con base en la IA

En cuestión de cuatro años, Zoom ha pasado de ser una gran desconocida a toda una referencia en el mundo de las comunicaciones. De emerger como herramienta de videollamadas en la pandemia, hoy Zoom se ha convertido en toda una solución multiusos para la vida diaria y el trabajo, cuya culminación se ha traducido con