Bash Script: cómo usar los argumentos de la línea de comandos

En este artículo, veamos el uso de argumentos de línea de comando en el script Bash. Los argumentos son entradas necesarias para procesar el flujo. En lugar de obtener información de un programa shell o asignarla al programa, los argumentos se pasan en la parte de ejecución.

Parámetros posicionales

Los argumentos de la línea de comandos se pasan de forma posicional, es decir, de la misma forma en que se dan en la ejecución del programa. Veamos con un ejemplo. 

Cree un programa shell que pueda mostrar los argumentos de la línea de comandos de forma posicional. El editor «Nano» se utiliza para crear el programa shell.

El editor Nano se usa para codificar el script de shell

El programa se puede ejecutar usando el comando «sh».

sh <script filename> arg1 arg2 arg3 ......

Entonces, nuestro código de ejecución se convertirá en

sh displayPositionalArgument.sh Bienvenido a GeeksForGeeks

Representación esquemática del código anterior:

Representación esquemática

Siempre el primer argumento comienza después de <script filename>. <nombre de archivo de secuencia de comandos> estará en la ubicación 0. Necesitamos tomar argumentos posicionales después de <nombre de archivo de secuencia de comandos>. Por lo tanto, en el ejemplo anterior

$1-> "Welcome"
$2-> "To"
$3-> "GeeksForFeeks"

Nota : Podemos pasar n número de argumentos y se identifican por medio de su posición.

La salida del código anterior:

Producción

También se deben tener en cuenta algunas variables especiales al manejar los argumentos de la línea de comandos.

variable especial Detalles de la variable especial
$1 … $n Argumento posicional que indica desde 1 .. n. Si el argumento es como 10, 11 en adelante, debe indicarse como ${10},${11
$0 Esto no se toma en la lista de argumentos ya que indica el «nombre» del programa shell. En el ejemplo anterior, $0 es «displayPositionalArgument.sh»
ps Valores de los argumentos que se pasan en el programa. Esto será de mucha ayuda si no estamos seguros de la cantidad de argumentos que se aprobaron.
ps Número total de argumentos y es un buen enfoque para los conceptos de bucle.
ps Para obtener todos los argumentos entre comillas dobles, podemos seguir de esta manera
$$ Para saber sobre la identificación del proceso del shell actual
ps y $! ID de estado de salida e ID de proceso del último comando

Uso de banderas

Los argumentos se pueden pasar junto con las banderas. Los argumentos se pueden identificar con una sola letra que tiene – antes de eso. Una sola letra puede tener significado y aquí tomemos -1, -2 y -3.

Necesitamos usar la función getopts para leer las banderas en la entrada, y OPTARG se refiere a los valores correspondientes:

Program2 usando banderas

El programa anterior se puede ejecutar como

sh usando Banderas.sh -1 ‘GeeksForGeeks’ -2 ‘Programación Java’ -3 100

Producción

Producción

Uso de bucles con $@: construcciones de bucles

Aunque los parámetros posicionales ayudan a enviar como argumentos de línea de comandos, si hay más argumentos, no podemos contarlos ni usarlos. En cambio, usando $@, podemos lograrlo. No es más que la array de todos los parámetros pasados. Iterando sobre un ciclo for, podemos obtener eso.

Program3 que contiene $@

Producción :

Otra forma es usando el operador Shift en lugar de $@ – Operador Shift:

La variable $# se usa para devolver el tamaño de entrada. Al usar eso y con el operador shift podemos lograr en lugar de $@

Programa4

Producción:

Escenario de caso de uso general usando el operador Shift:

Suponga que en los argumentos del comando, podemos pasar el argumento «-d», que no es más que saber que es un directorio. 

  • Si se da -d, entonces debemos elegir el siguiente argumento y verificar si es un directorio como ese.
  • Si no hay -d, compruebe si es un archivo o no

Luego muestre en consecuencia si el argumento es un directorio o un archivo

En los comentarios se define el flujo

Deje que el nombre del script sea «shiftArgument.sh»

sh  shiftArgument.sh -d /home shiftArgument.sh 

Producción:

Producción

El código anterior verificará «/ home» como un directorio, ya que tenemos «-d» como el primer argumento posicional y, por lo tanto, se realiza el operador de cambio y se verifica el siguiente argumento para ver si es un directorio. Si no hay un argumento «-d» como el anterior, simplemente comprueba «si ese argumento es un archivo o no».

Conclusión

Podemos pasar argumentos de línea de comandos a nuestra conveniencia de forma posicional o con banderas. Además, están disponibles conceptos útiles como $@ (array de todos los parámetros), $# (mediante el cálculo del tamaño de entrada) y con eso, podemos iterar en los bucles «for» o «while», podemos acceder a los argumentos.

Publicación traducida automáticamente

Artículo escrito por priyarajtt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *