LINUX

Cómo pasar argumentos de la línea de comandos en el script de Shell

En un script de shell, puede pasar variables como argumentos ingresando argumentos después del nombre del script, por ejemplo ./script.sh arg1 arg2. El shell asigna automáticamente el nombre de cada argumento a una variable.

Los argumentos son conjuntos de caracteres entre espacios agregados después del guión. Para especificar un argumento que incluye espacios, debe encerrar el argumento completo entre comillas dobles. Cada argumento de script ingresado en la línea de comando tiene un nombre de variable predeterminado.

El primer argumento después del nombre del script se asigna a la variable $ 1, el segundo argumento a $ 2, y así sucesivamente.

Este es un script simple que muestra información sobre un usuario para comprender el argumento del shell del script.

#!/bin/bash
#The script demonstrates the use of variables entered at the command line.
echo "My name is $1"
echo "I work for $2"

Guarde el script anterior como ‘name.sh’ y hágalo ejecutable usando el comando chmod como se muestra a continuación.

# chmod +x name.sh

Ahora ejecute el script con dos argumentos.

Producción

# ./name.sh foobar example.com

My name is foobar
I work for example.com

Cuando ejecutó el script anterior, el primer argumento, foobar, fue sustituido por la variable $ 1. De manera similar, el segundo argumento fue sustituido por $ 2.

Rango de argumentos de la línea de comando

Los argumentos de la línea de comandos oscilan entre $ 0 y $ 9. Aunque el shell solo puede acceder a diez variables simultáneamente, puede programar scripts para acceder a un número ilimitado de elementos que especifique en la línea de comandos. Si intenta acceder a la variable $ 10, el shell interpreta que $ 10 se refiere a la variable $ 1 con el siguiente carácter 0. Para acceder al valor de la variable de $ 10, use el comando shift. Esto elimina el valor del primer parámetro de la lista y lo reemplaza por el segundo. El tercer valor reemplaza al segundo y así sucesivamente. El valor originalmente de $ 10 se convierte en el valor de la variable de $ 9.

Por ejemplo, este script, llamado var.sh, muestra los valores de las variables de $ 1 a $ 10. El comando shift borra el valor de la primera variable y el valor de cada una de las otras variables se desplaza hacia abajo y se convierte en el valor de la variable anterior.

#!/bin/bash
echo "$1 $2 $3 $4 $5 $6 $7 $8 $9 $10"
shift
echo "$1 $2 $3 $4 $5 $6 $7 $8 $9 $10"

Producción

# ./var.sh a b c d e f g h i j
a b c d e f g h i a0
b c d e f g h i j b0

Referencias de variables especiales

PS

La variable $ # contiene el número total de parámetros ingresados ​​en la línea de comando. El valor de esta variable es siempre un número entero. Considere el ejemplo de ‘name.sh’, se pasaron dos parámetros como ‘Sandeep’ y ‘example.com’. Entonces echo $ # generará 2.

PS

Esta variable especial contiene todos los argumentos de la línea de comandos que se han pasado a un script, enumerados como una sola palabra.

echo $* will output
foobar example.com

PS

La variable especial $ @ es similar a $ * en que contiene todos los valores especificados como argumentos de la línea de comandos. Sin embargo, $ @ enumera cada argumento como una palabra separada, mientras que $ * no distingue entre los espacios ordinarios que separan los valores y los que están entre comillas. El valor Hello World se devuelve como «Hello World» usando $ *, mientras que el mismo valor se devuelve como «Hello» «World» cuando se usa $ @.

echo $@ will output
foobar example.com

Más variables de shell

$ 0

La variable $ 0 contiene el nombre del script en sí.

PS

Echo es el estado de salida del último comando. El resultado es 0 (cero) si el comando se ejecutó correctamente y distinto de cero si no lo hizo.

# echo $?
0

$$

Eco PID de la carcasa actual

# echo $$
12354

Conclusión

En este tutorial aprendimos cómo pasar argumentos a un script de shell usando un ejemplo. Si tiene alguna pregunta o comentario, no dude en dejar un comentario.

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba
Cerrar