Programmation Bash/Scripts
Un livre de Wikibooks.
|
Définition |
|
Un script est une suite d’instructions, de commandes qui constituent un scénario d'actions. C’est un fichier texte que l’on peut exécuter, c’est à dire, lancer comme une commande. |
Sections |
[modifier] Au commencement, la ligne shebang
Dans la pratique, on utilise plusieurs invites de commandes pour commander des systèmes ou des applications différentes. Par exemple, il est possible d’utiliser Perl, Python, Bash, Tcsh. Il ne suffit donc pas d'écrire une suite d’instructions pour que le système puisse l'exécuter. Il faut également préciser l’interprète avec lequel ce script est écrit. C’est l’objet de la première ligne d’un script : la ligne ”shebang”. Pour un script en shell bash, elle se présente ainsi :
#!/bin/bash
Pour utiliser tcsh, alors il faut écrire :
#!/bin/tcsh
[modifier] Exécution d'un script
Avant toute chose, il faut rendre un script exécutable. Sous Unix, il s'agit d'utiliser la commande chmod.
$ chmod +x script.sh $ ls -l -rwxr-xr-x 1 shadouser shadogroup 26 Mar 5 15:31 script.sh
Quatre solutions sont possibles pour exécuter un script.
En utilisant ./ si l'on se trouve dans le répertoire du script :
$ ./script.sh
ou en spécifiant le chemin absolu :
$ /home/jojo/script.sh
si script se trouve dans le répertoire /home/jojo.
Une autre solution est de modifier la variable d'environnement PATH et d'y faire figurer le répertoire qui contient le script à exécuter. Dans ce cas, il est possible d'invoquer le script depuis n'importe quel endroit du système de fichiers.
$ PATH=$PATH:/home/jojo/ $ script.sh
Enfin, une dernière solution est d'appeler directement l'interprète et de lui transmettre le script à exécuter.
$ bash script.sh
[modifier] Exemple de script
#!/bin/bash for FILE in $* do if [ -e $FILE ] then echo "Le fichier $FILE est présent dans le répertoire courant." fi done exit 0
[modifier] Paramètres
Les paramètres fournit par l'utilisateur lors de l'appel de scripts sont accessibles grace aux paramètres positionnels : $0, $1, ..., $9. $0 représente le nom du script tel qu'il a été appelé, $1 est le premier argument du script, $2 le deuxième, etc. Il n'est pas possible d'accéder directement au dixième et suivant arguments de cette manière.
Une autre variable essentielle lors de la gestion des paramètres est $# qui a pour le valeur le nombre d'arguments transmis lors de l'appel du script.
#! /bin/bash if [ $# -lt 1 ]; then echo "Usage: $0 <votre prenom>" exit 1 fi echo "Bonjour $1"