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