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

Passage de paramètres Shell

Nous pouvons transmettre des paramètres au script lors de l'exécution d'un script Shell, et le format de récupération des paramètres dans le script est :$n.n Représente un nombre,1 Pour le premier paramètre du script exécuté,2 Pour le deuxième paramètre du script exécuté, etc...

Exemple en ligne

Dans les exemples suivants, nous transmettons trois paramètres au script et les affichons séparément, où $0 Pour le nom du fichier exécuté (y compris le chemin d'accès au fichier) :

#!/bin/bash
# auteur: Tutoriel de base
# url:fr.oldtoolbag.com
echo "Exemple de passage de paramètres Shell !";
echo "Le nom du fichier exécuté : $0";
echo "Le premier paramètre est : $"1";
echo "Le deuxième paramètre est : $2";
echo "Le troisième paramètre est : $3";

Définir les permissions d'exécution du script et exécuter le script, le résultat est affiché comme suit :

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Exemple de passage de paramètres Shell !
Le nom du fichier exécuté : ./test.sh
Le premier paramètre est :1
Le deuxième paramètre est :2
Le troisième paramètre est :3

De plus, il existe quelques caractères spéciaux utilisés pour traiter les paramètres :

Traitement des paramètresDescription
$#Nombre de paramètres passés au script
$*Affiche tous les paramètres passés au script sous forme de chaîne unique.
Comme "$*Dans le cas où les guillemets "" sont utilisés, ainsi que "$1 $2 Affiche tous les paramètres sous la forme de "… $n".
$$L'ID du processus actuel de l'exécution du script
$!L'ID du dernier processus en cours d'exécution en arrière-plan
$@et $*Identique, mais utilisez-le avec des guillemets, et retournez chaque paramètre dans les guillemets.
Comme dans le cas de "$@" entouré de guillemets, avec "$1" "$2" … "$n" pour afficher tous les paramètres.
$-Afficher les options utilisées par Shell actuellement, équivalent àCommande setFonction identique.
$?Afficher l'état de sortie de la dernière commande. 0 signifie qu'il n'y a pas d'erreur, toute autre valeur indique qu'il y a une erreur.
#!/bin/bash
# auteur: Tutoriel de base
# url:fr.oldtoolbag.com
echo "Exemple de passage de paramètres Shell !";
echo "Le premier paramètre est : $"1";
echo "Nombre de paramètres : $#";
echo "Les paramètres transmis sont affichés sous forme de chaîne : $"*";

Exécuter le script, les résultats de la sortie sont les suivants :

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Exemple de passage de paramètres Shell !
Le premier paramètre est :1
Nombre de paramètres :3
Les paramètres transmis sont affichés sous forme de chaîne :1 2 3

$* Différences avec $@ :

  • Points communs : tous deux citent tous les paramètres.

  • Différences : se manifestent uniquement dans les guillemets doubles. Supposons que trois paramètres aient été écrits au cours de l'exécution du script 1、2、3,则 " * " équivalent à "1 2 3"(transmis un paramètre), et "@" est équivalent à "1" "2" "3"(transmis trois paramètres).

#!/bin/bash
# auteur: Tutoriel de base
# url:fr.oldtoolbag.com
echo "-- \$* Demonstration ---"
for i in "$"*"; do
    echo $i
done
echo "-- \$@ Demonstration ---"
for i in "$@"; do
    echo $i
done

Exécuter le script, les résultats de la sortie sont les suivants :

$ chmod +x test.sh 
$ ./test.sh 1 2 3
-- $* Demonstration ---
1 2 3
-- $@  Demonstration ---
1
2
3