Écrire un script Il est fréquent que l'on fasse plusieurs fois les mêmes opérat
Écrire un script Il est fréquent que l'on fasse plusieurs fois les mêmes opérations sur son ordinateur. Par exemple renommer et classer dans un dossier toutes les photos produites lors d'une sortie photographie, ou effectuer des copies régulière, de sauvegarde, d'un fichier important. Écrire toutes les commandes à chaque fois est un peu ennuyeux, et surtout source de potentielles erreurs. Pour cela, on préfère utiliser des scripts. DéfinitionScript Un script est un fichier qui va contenir différentes instructions à exécuter dans la console, les unes à la suite des autres. De la même manière que le script d'un film décrit l’enchaînement des scènes et des répliques, un script informatique décrit les commandes successives à exécuter. MéthodeCréer un script Pour créer un script, il suffit d'écrire les commandes que l'on souhaite dans un fichier. Par exemple dans un fichier premierscript.sh on peut écrire une première instruction à exécuter. 1 echo "Hello World" Pour que notre script soit utilisable, il est nécessaire de donner les droits d'exécution sur le fichier. 1 $ chmod +x premierscript.sh Ensuite on peut lancer le script dans la console, comme si c'était une commande, en indiquant le chemin de celui-ci. 1 kyane@europa:~$ ./premierscript.sh 2 Hello World Lorsque l'on écrit des scripts sous Linux, la convention veut que l'on utilise l'extension .sh (ou bien aucune extension) pour bien identifier que c'est un fichier visant à être exécuté. Ce n'est qu'une convention, et non une contrainte technique. Shell En réalité lorsque l'on utilise notre ligne de commande, on utilise ce que l'on appelle un shell. Le shell est une sorte de langage de programmation : celui qui interprète les commandes qui sont entrées dans la console et qui se charge ensuite de lancer les différents programme que l'on appelle. Par défaut sous Ubuntu le shell est Bash (pour Bourne-Again shell), et c'est sans doute l'un des plus connus (il en existe d'autres, comme sh ou zsh). Le shebang Comme pour les instructions entrées dans la console, le script doit-être interprété par un shell. C'est le shell par défaut qui est utilisé (Bash sous Ubuntu), mais on pourrait vouloir le faire exécuter par un autre shell, ou même par un langage de programmation complètement différent (comme Python ou Perl). Il existe donc une convention qui est d'indiquer en tout début de fichier de script le shell ou langage que l'on souhaite utiliser pour exécuter le script. C'est ce que l'on appelle un shebang et il a la forme suivante : 1 #!/bin/bash Un shebang commence systématiquement par #! suivi du chemin vers le shell que l'on souhaite utiliser (pour Bash il s'agit de /bin/bash). Il doit toujours être placé sur la première ligne du script. La plupart du temps cette ligne sera toujours #!/bin/bash (en tout cas pour les scripts de ce cours) et n'est pas obligatoire, mais il est important de savoir ce que cela signifie. Si l'on écrit des commandes dans un fichier texte et que l'on ajoute des permissions d’exécution dessus, on obtient un script. Un script est pratique pour lancer une suite d'opérations identiques plusieurs fois, sans avoir à écrire les commandes à chaque fois. Le script peut contenir toutes les commandes et opérateurs que l'on écrit habituellement dans la console, car il est exécuté par le même programme (que l'on nomme le shell) Variables et paramètres Variable Une variable est un emplacement mémoire utilisé dans un programme ou un script pour conserver une valeur et pouvoir l'utiliser par la suite. Par exemple dans un programme qui gère un formulaire d'inscription, on peut s'attendre à trouver une variable nommée "nom" qui contiendrait le nom de la personne pour pouvoir l'afficher sur une interface. Que ce soit dans un script ou directement dans la console, il est possible de stocker des valeurs dans des variables. 1 $ nom="bayart" Cette instruction créé simplement un variable nommée "nom" et qui a pour valeur "bayart". On peut ensuite utiliser cette variable dans les commandes suivantes, par exemple l'afficher avec la commande echo. 1 $ echo $nom La commande echo permet d'afficher du texte ou une variable dans le terminal. Ici on fait appel à la variable "nom", tout simplement à l'aide du symbole "$" suivi du nom de la variable. Résultat d'une commande Il est possible de récupérer le résultat d'une commande dans une variable. Pour cela il suffit d'entour la commande avec un $(). 1 $ resultat=$(ls -l script.sh) 2 $ echo $resultat 3 -rwxr-xr-x 1 kyane kyane 69 9 déc. 16:50 script.sh Le résultat de la commande ls -l script.sh se trouve dans la variable resultat que l'on peut ensuite utiliser. Paramètre de script Un paramètre de script est une variable qui est passée en paramètre au lancement du script, et qui sera disponible durant son execution. Lorsque l'on lance un script, on peut ajouter des paramètres, séparés par des espaces, qui seront utilisables dans le script. Par exemple : 1 $ ./hello.sh kyane pichou Ici on lance le script hello.sh qui va recevoir deux paramètres : kyane et pichou. On peut les utiliser dans le script de la manière suivante : 1 #!/bin/bash 2 3 echo "Bonjour $1 $2" 1 $ ./hello.sh kyane pichou 2 Bonjour kyane pichou Les paramètres se trouvent dans des variables ayant pour nom des chiffres. Le premier paramètre est dans $1, le second dans $2, etc. Ici on affiche donc le texte "Bonjour" suivi des deux paramètres. Il est possible de créer des variables, en console on dans un script, qui vont conserver en mémoire une valeur ou le retour d'une commande, pour la réutiliser plus tard. De plus il est possible d'accéder à des variables, dans un script, contenant les paramètres passés lors de l'exécution Structures conditionnelles Structure conditionnelle En programmation, une structure conditionnelle est une structure qui permet, dans un script ou un programme, d'exécuter des instructions en fonction de conditions basées sur les valeurs de variables. Voici un exemple rédigé (on parle d'un algorithme) d'une structure conditionnelle. 1 SI "mavariable" est plus grande que "12" 2 ALORS 3 Afficher un message d'erreur 4 FIN SI On comprends qu'une condition (« si mavariable est plus grande que 12 ») est évaluée, et si cette condition est validée alors on exécute l'instruction dans la structure (« Afficher un message d'erreur »). Syntaxe La même structure en Bash donne : 1 if [ $mavariable -gt 12 ] 2 then 3 echo "Error" 4 fi La partie se trouvant entre les crochets est donc la condition. On retrouve bien l'appel à mavariable (avec le symbole "$"), que l'on compare à la valeur 12. La comparaison se fait avec l'opérateur -gt, signifiant Greater Than, qui permet de valider que ce qui se trouve à gauche de l'opérateur est plus grand que ce qui se trouve à droite. Une condition se trouve systématiquement entre crochets, avec un espace entre chaque crochet et la condition. Par exemple écrire [$mavariable -gt 12] n'est pas valide. Les différentes conditions Il existe de nombreux opérateur pour les conditions, voici quelques exemples pour les comparaison de variables contenant du texte. $texte1 = $texte2 Vérifie que la variable texte1 contient la même chose que texte2 $texte1 != $texte2 Vérifie que les deux variables sont différentes -z $texte Vérifie si la variable est vide (pas de texte) ou inexistante. -n $texte Vérifie si la variable est non vide D'autres permettent la comparaison de nombres. $num1 -eq $num2 Vérifie que les 2 nombres sont égaux $num1 -ne $num2 Vérifie que les 2 nombres ne sont pas égaux $num1 -lt $num2 Vérifie si num1 est inférieur (<) à num2 $num1 -le $num2 Vérifie si num1 est inférieur ou égal (<=) à num2 $num1 -gt $num2 Vérifie si num1 est supérieur (>) à num2 $num1 -ge $num2 Vérifie si num1 est supérieur ou égal (>=) à num2 Enfin certains permettent de faire des tests sur des fichiers. -e $nomfichier Vérifie si le fichier existe -d $nomfichier Vérifie que le fichier est un répertoire. -f $nomfichier Vérifier que le fichier est un fichier (donc pas un répertoire) Inversion de condition Il est possible d'inverser une condition en utilisant la caractère de négation "!". 1 if [ ! $mavariable -gt 12 ] 2 then 3 echo "Error" 4 fi Ici l'instruction dans le bloc if ne sera exécutée que si mavariable n'est pas plus grande que 12. La condition est inversée. Sinon Il est possible de proposer une alternative si la condition première n'est pas respectée. 1 if [ $mavariable -gt 12 ] 2 then 3 echo "Error" 4 else 5 echo "Ok" 6 fi Si la condition est validée on exécute l'instruction dans le bloc if, sinon on exécute celle du bloc else. Sinon si Il est possible de complexifier les conditions en ajoutant plusieurs alternatives conditionnelles avec le mot clef elif (contraction de else if). 1 if [ $mavariable -gt 12 ] 2 then 3 echo "Error" 4 elif [ $mavariable -lt 5 ] 5 then 6 echo "Perfect" 7 else 8 echo "Ok" 9 fi 10 Si la variable est plus grande que 12, uploads/Industriel/ scrip 1 .pdf
Documents similaires
-
24
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Nov 26, 2022
- Catégorie Industry / Industr...
- Langue French
- Taille du fichier 0.1450MB