====== Rédaction de scripts Shell ====== * Objet : Rédaction de scripts Shell * Niveau requis : {{tag>avisé}} * Commentaires : //Faire des choses compliquées avec votre shell.// * Ce tuto est la suite logique du tuto [[doc:programmation:shell:|sur le shell]]. N'oubliez pas de lire également [[doc:programmation:shell:|sur l'utilisation avancée du shell]]. * Suivi : {{tag>à-tester}} * Création par [[user>captnfab]] le 30/09/2013 * Testé par .... le .... * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?pid=68350 | ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) ===== #! et exécution ===== La première ligne d'un script shell doit toujours commencer par ''#!'', suivi ensuite de l'interpréteur de commande à utiliser. Si vous n'utilisez pas de commande propres à ''bash'' ou ''zsh'', vous pouvez laisser l'interpréteur de commande par défaut : #!/bin/sh Si vous voulez pouvoir exécuter votre script, n'oubliez pas de donner les droits correspondant à l'utilisateur devant l'exécuter. Par exemple : chmod a+x monscript.sh Ou encore : chmod root:admin monscript.sh chmod 750 monscript.sh Voir ce lien où il est expliqué trois méthodes d'exécution d'un script : [[doc:programmation:shells:bash-les-differents-caracteres-speciaux?&#comment-executer-ses-scripts]] ===== Récupération des arguments ===== L'argument 0 est le chemin utilisé pour exécuter le programme. Exemple, cela peut-être ''./monscript'' ou ''monscript'' s'il est dans le PATH, ou même ''./un-lien-vers-mon-script'' si vous avec utilisé ''ln''. Il est accessible via la variable ''$0''. Le premier argument est ensuite accessible via ''$1'', le deuxième via ''$2'', etc. L'ensemble des arguments est accessible via ''$@'' alors que la concaténation de tous les arguments (séparés par des espaces) est accessible via ''$*''.Le nombre d'arguments est accessible via ''$#''.\\ Voir : [[doc:programmation:shells:bash-les-differents-caracteres-speciaux?&#variables-de-substitution-predefinies-principalement-dans-les-scripts]] La commande ''shift'' permet de décaler tous les arguments vers la gauche (''$1'' désigne le second, etc.). Exemple : #!/bin/sh echo "Commande initiale : $0 $@" N=0 while [ -n "$1" ]; do N=$(($N+1)) echo "Argument $N : $1"; shift; done Pour tout comprendre de cet exemple voir les [[doc:programmation:shell:avancee|Fonctionnalités avancées du Shell]] ainsi que les liens que vous y trouverez. ===== Liens à visiter ===== * [[doc:programmation:scripts | Divers scripts disponibles.]]