English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pasar parámetros a Shell

Podemos pasar parámetros al script mientras ejecutamos el Shell script, y el formato de obtención de parámetros en el script es:$n.n Representa un número,1 El primer parámetro del script de ejecución,2 El segundo parámetro del script de ejecución, y así sucesivamente...

Ejemplo en línea

En el siguiente ejemplo, pasamos tres parámetros al script y los outputamos respectivamente, entre los cuales $0 El nombre del archivo ejecutado (incluso la ruta del archivo):

#!/bin/bash
# autor: Tutoriales básicos
# url:es.oldtoolbag.com
echo "¡Ejemplo de paso de parámetros de Shell!";
echo "El nombre del archivo ejecutado: $0";
echo "El primer parámetro es: $"1";
echo "El segundo parámetro es: $2";
echo "El tercer parámetro es: $3";

Establecer permisos ejecutables para el script y ejecutar el script, el resultado de la salida es como se muestra a continuación:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
¡Ejemplo de paso de parámetros de Shell!
El nombre del archivo ejecutado: ./test.sh
El primer parámetro es:1
El segundo parámetro es:2
El tercer parámetro es:3

Además, hay algunos caracteres especiales para manejar parámetros:

Manejo de parámetrosDescripción
$#El número de parámetros pasados al script
$*Se muestra todos los parámetros pasados al script con una sola cadena.
Como "$*La situación entre comillas dobles "" y con "$1 $2 Se outputan todos los parámetros en la forma "… $n".
$$El ID de proceso actual del script en ejecución
$!El último ID de proceso ejecutándose en segundo plano
$@Con $*Igual, pero se usa con comillas y se regresan cada uno de los parámetros dentro de las comillas.
Como en el caso de "$@" entre comillas, se utilizan comillas cuando se usa, y se regresan cada uno de los parámetros dentro de las comillas.1" "$2" … "$n" para salida de todos los parámetros.
$-Mostrar las opciones utilizadas por Shell en la actualidad, equivalentes aComando setFunción idéntica.
$?Mostrar el estado de salida del último comando. 0 indica que no hubo errores, cualquier otro valor indica que hubo errores.
#!/bin/bash
# autor: Tutoriales básicos
# url:es.oldtoolbag.com
echo "¡Ejemplo de paso de parámetros de Shell!";
echo "El primer parámetro es: $"1";
echo "Número de parámetros: $#";
echo "Los parámetros pasados se muestran como una cadena: $"*";

Ejecutar el script, los resultados de la salida se muestran a continuación:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
¡Ejemplo de paso de parámetros de Shell!
El primer parámetro es:1
Número de parámetros:3
Los parámetros pasados se muestran como una cadena:1 2 3

$* Diferencias con $@:

  • Similitudes: ambos son referencias a todos los parámetros.

  • Diferencias: solo se reflejan en comillas dobles. Supongamos que se escribieron tres parámetros durante la ejecución del script 1、2、3,则 " * " es equivalente a "1 2 3" (se pasó un parámetro), mientras que "@" es equivalente a "1" "2" "3" (se pasaron tres parámetros).

#!/bin/bash
# autor: Tutoriales básicos
# url:es.oldtoolbag.com
echo "-- \$* Demostración ---"
for i in "$"*"; do
    echo $i
hecho
echo "-- \$@ Demostración ---"
for i in "$@"; do
    echo $i
hecho

Ejecutar el script, los resultados de la salida se muestran a continuación:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $* Demostración ---
1 2 3
-- $@ Demostración ---
1
2
3