passage de paramètres Shell

Nous pouvons dans la mise en œuvre de Shell script pour passer des paramètres au script, le script prend les paramètres dans leformat suivant :$ n.n représente un nombre, 1 pour la première exécution du paramètre de script, 2 pour le deuxième paramètre pour exécuter le script, et ainsi de suite frfrfr

Exemples

Les exemples suivants nous passons trois paramètres du script, et les sorties, où $ 0 est le nom du fichier à exécuter:

#!/bin/bash
# author:本教程
# url:www.w3write.com

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

Définir les autorisations exécutables pour le script et d'exécuter le script, la sortie se présente comme suit:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3

En outre, il existe plusieurs paramètres pour traiter les caractères spéciaux:

Gestion des paramètres explication
# $ Le nombre de paramètres transmis au script
$ * En une seule chaîne affiche tous les paramètres passés au script.
Tels que "$ *" avec "" "boîtier fermé, la forme de« $ 1 $ 2 fr. $ n "sortie de tous les paramètres.
$$ Le nombre actuel processus d'identification de l'exécution du script
$! Enfin, un processus en cours d'exécution dans le numéro d'ID de fond
$ @ * $ Avec le même, mais lorsque vous utilisez des guillemets, et retourne chaque paramètre entre guillemets.
Tels que "$ @" avec "" "boîtier fermé, sous forme de" $ 1 "" $ 2 "fr." $ n "sortie de tous les paramètres.
$ - Shell affiche l'option actuelle à utiliser, et définir la commande la même fonction.
$? Affiche l'état de sortie de la dernière commande. 0 indique une absence d'erreurs, ainsi que toute autre valeur indique une erreur.
#!/bin/bash
# author:本教程
# url:www.w3write.com

echo "Shell 传递参数实例!";
echo "第一个参数为:$1";

echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";

Exécuter le script, dont la sortie est la suivante:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
第一个参数为:1
参数个数为:3
传递的参数作为一个字符串显示:1 2 3

$ * Et $ @ différence:

  • Le même point: toutes les références à tous les paramètres.
  • Différences: seulement reflété entre guillemets. Supposons que le script est exécuté lors de l'écriture des trois paramètres 1,2,3 ,, "*" est équivalent à "123" (passer un paramètre), et "@" est équivalent à "1", "2", " 3 "(passé trois paramètres).
#!/bin/bash
# author:本教程
# url:www.w3write.com

echo "-- \$* 演示 ---"
for i in "$*"; do
    echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
    echo $i
done

Exécuter le script, dont la sortie est la suivante:

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