Cómo pasar argumentos a un Bash-Script

Share on facebook
Share on twitter
Share on linkedin
Share on telegram
Share on whatsapp
Share on email
Share on print
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.

Deja un comentario

TAMBIÉN TE INTERESA

Controlar Roku con Alexa

Controla tu Roku con Alexa y tu voz

Roku es el principal reproductor de medios de streaming, mientras que los dispositivos Alexa son algunos de los altavoces inteligentes más populares disponibles. Los dos no son intrínsecamente compatibles, pero sólo tiene sentido que quieras controlar Roku con Alexa si posees y usas ambos con frecuencia. Claro, puedes usar el control remoto estándar de Roku

Cambiar contraseña de Chromebook

¿Necesitas cambiar tu contraseña de Chromebook? Cómo hacerlo

Para cambiar la contraseña de tu cuenta de Chromebook, debes cambiar la contraseña de tu cuenta de Google. Esto se puede lograr usando tu Chromebook, o puedes usar cualquier otro ordenador, tableta o teléfono que esté conectado a tu cuenta de Google. Si tienes habilitada la autenticación de dos factores, asegúrate de tener anotados los

Abrir, editar y convertir archivos VSD

Abrir, editar y convertir archivos VSD

Un archivo con la extensión.VSD es un archivo Visio Drawing creado por Visio, la aplicación gráfica profesional de Microsoft. Los archivos VSD son archivos binarios que pueden contener texto, imágenes, dibujos CAD, gráficos, anotaciones, objetos y más. Microsoft Visio 2013 (y más reciente) es la opción predeterminada para almacenar archivos de Visio Drawing con la

Usar el teléfono como control remoto con Amazon Fire TV Stick

Cómo usar el móvil como control remoto con Amazon Fire TV Stick

El mando a distancia que se incluye con los dispositivos Fire TV Stick y Fire TV funciona a la perfección, y es pequeño, por lo que no ocupa mucho espacio. Sin embargo, ese tamaño compacto hace que sea alarmantemente fácil de perder. Ya sea que hayas perdido el mando a distancia de tu Fire TV

Conectar Roku a Wi-Fi

Conecta tu Roku a Wi-Fi

Antes de configurar un dispositivo Roku para transmitir cualquiera de los más de 5000 canales de transmisión disponibles, necesitas estar conectado a Internet. Las Roku Box y los televisores te permiten conectarte a Internet a través de Ethernet o Wi-Fi, mientras que los Streaming Sticks sólo ofrecen la opción Wi-Fi. Índice de contenidos1 ¿Qué necesitas

Cómo abrir, editar y convertir archivos PCD

Cómo abrir, editar y convertir archivos PCD

Un archivo con la extensión de archivo PCD es un archivo de imagen de Kodak Photo CD. Se utilizan para almacenar fotos de alta resolución en CD, así como para el hardware de digitalización de Kodak. Estos tipos de archivos PCD almacenan imágenes comprimidas y pueden mantener cinco resoluciones diferentes de la misma foto en