Vous êtes sur la page 1sur 7

Introduction aux scripts shell

Un script shell permet d'automatiser une série d'opérations. Il se présente sous la forme d'un fichier contenant une
ou plusieurs commandes qui seront exécutées de manière séquentielle.

Scripts Bash : notions

Automatiser ses tâches d’administration en Bash.

1.1. Scripts Bash

Voici une liste de départ des concepts à maîtriser pour le scripting Bash :

 shebang
 variables positionnelles
 variables internes
 fonctions et programme principal
 fin de script
 test
 conditions
 boucles
 débogage
 ~/.bashrc

 Références et exemples

1.2. Shebang

Le shebang, représenté par #!, est un en-tête d’un fichier texte qui indique
au système d’exploitation que ce fichier n’est pas un fichier binaire mais un
script (ensemble de commandes) ; sur la même ligne est précisé
l’interpréteur permettant d’exécuter ce script. Pour indiquer au système
qu’il s’agit d’un script qui sera interprété par bash on placera le shebang
sur la première ligne :

1.3. Hello World


1.4 Donner les droits d’exécution au script.

1.5 Voir Le contenue du script

1.6 Exécuter le script

1.7. Interaction utilisateur


La commande echo pose une question à l’utilisateur.

La commande read lit les valeurs entrées au clavier et les stocke dans une


variable à réutiliser.
On peut aller plus vite avec read -p qui sort du texte et attend une valeur
en entrée :

TP 1

Résultat
2. Structures conditionnelles

2.1. Structure conditionnelle if/then

TP 2
Explication
Ce script peut paraître simple à première vue mais certaines choses prêtent à confusion et ont besoin
d'être expliquées en détail.
Tout abord, le `echo -n` permet de laisser le curseur sur la même ligne, ce qui permet à l'utilisateur de
taper la réponse après la question (question d'esthétique).
L'instruction `read` permet d'affecter une valeur ou un caractère à une variable quelconque, en la
demandant à l'utilisateur.
Ensuite vient l'instruction conditionnelle `if`. Elle est suivie d'un « [ » pour délimiter la condition. La
condition doit bien être séparée des crochets par un espace ! Attention, la variable est mise entre
guillemets car dans le cas où la variable est vide, le shell ne retourne pas d'erreur, mais en cas contraire,
l'erreur produite ressemble à :

[: =: unaryoperator expected

L'opérateur `||` signifie exécuter la commande suivante si la commande précédente n'a pas renvoyé 0.


Il existe aussi l'opérateur && qui exécute la commande suivante si la commande précédente a renvoyé 0,
et enfin ; qui exécute l'opération suivante dans tous les cas.
Les « { » servent à bien délimiter le bloc d'instructions suivant le `then`, est une commande et donc si
elle est sur la même ligne que le `if` les deux commandes doivent être séparées par un `;`
Ensuite, `elif` sert à exécuter une autre série d'instructions, si la condition décrite par `if` n'est pas
respectée, et si celle fournie après ce `elif` l'est.
Enfin, `else` sert à exécuter un bloc si les conditions précédentes ne sont pas respectées (ah les jeunes,
ils respectent plus rien de nos jours  ).
`fi` indique
la fin de notre bloc d'instructions `if`. Cela permet de voir où se termine la portion de
code soumise à une condition.

1. Boucle for-do
Faire la même chose pour tous les éléments d’une liste. En programmation, on est souvent amené à
faire la même chose pour tous les éléments d’une liste. Dans un shell script, il est bien évidemment
possible de ne pas réécrire dix fois la même chose. On dira que l’on fait une boucle. Dans la boucle
“for-do-done”, la variable prendra successivement les valeurs dans la liste et les commandes à
l’intérieur du “do-done” seront répétées pour chacune de ces valeurs.

for variable in liste_de_valeur ; do


commande
commande
done
Par défaut, for utilise la liste in "$@" si on omet ce mot-clé.

TP : 3
Supposons que nous souhaitions créer 10 fichiers .tar.gz factices, en une seule ligne :

for num in 0 1 2 3 4 5 6 7 8 9 ;
do touch fichier$num.tar.gz ;
done

Vous aimerez peut-être aussi