Les scripts permettent de programmer dans le langage du shell, en utilisant, entre autres, les commandes natives de Linux.
Comme nous l’avons vu au début de ce cours, le shell, ou encore “invite de commande” est un programme qui vous permet d’interagir avec le système en ligne de commande.
Il existe plusieurs shells :
Attention : les scripts, leur structuration et leur expressivité dépendent du shell que vous utilisez !
Il suffit d’utiliser la commande echo $0
.
Essayez les commandes suivantes :
echo $0
/bin/sh
Une fois les commandes effectuées, essayez d’utiliser vos raccourcis préférés (Ctrl+R, Tab, flèches directionnelles). Que se passe-t-il ? Comment revenir à votre shell préféré ?
Il faut voir bash comme un langage de programmation comme un autre... et plutôt capricieux.
Attention aux espaces, aux points virgules, aux
guillements et aux variables qui se déclarent sans
le $
et qui s’utilisent avec.
Vous trouverez dans la suite un rapide descriptif de ce qu’il est possible de faire en bash, mais n’hésitez pas à consulter les ressources en ligne pour en savoir plus, connaître les options des différentes commandes, etc.
Il est important de démarrer son script par une ligne qui indique que vous travaillez en bash. Sinon, c’est le shell par défaut de l’utilisateur qui sera utilisé pour exécuter le script, et si celui-ci n’est pas bash, le script risque d’avoir un comportement inattendu.
#!/bin/bash
Pour écrire sur la sortie standard, on utilise la commande
echo
.
Dans un script, on peut faire tout ce que l’on peut faire en console, et même plus ! Autrement dit, toutes les commandes disponibles sur le système sont utilisables dans les scripts.
Dans l’exemple ci-dessous, on a un petit script qui
stocke le résultat de la commande ls
dans le
fichier ma_liste.txt
(qui est créé pour l’occasion)
et qui affiche sur la sortie standard le nombre de lignes
du fichier ma_liste.txt
.
Conventionnellement, on sauvegarde les scripts dans des fichiers dont l’extension est .sh
, pour les repérer plus facilement, mais ce n’est absolument pas une obligation.
Pour exécuter le script, le plus simple est de donner à l’utilisateur qui le possède les droits d’exécution, en utilisant chmod
, puis de lancer le script en utilisant la commande ./nom_du_script.sh
. L’autre solution consiste à utiliser la commande correspondant au shell qui doit exécuter le script : bash nom_du_script.sh
. Cette méthode permet d’exécuter le script avec l’option -x qui est l’option “mode debug”.
Le symbole qui permet d’insérer un commentaire est #
.
#!/bin/bash
echo "Hello World !"
# Ceci est un script qui affiche "Hello World !" sur la sortie standard.
La première ligne permet de charger le bon shell. En son absence, c’est le shell par défaut de l’utilisateur qui sera utilisé pour exécuter le script, et ce, à nos risques et périls. La dernière ligne est un commentaire.
Il est parfois utile d’avoir recours aux variables d’environnement du système. Voici une liste des principales variables à connaître :
$SHELL
$PATH
$HOME
$PWD
$OLDPWD
Comme mentionné plus haut, bash est un langage capricieux, faites très attention à l’emploi des espaces dans la déclaration et l’affectation des variables.
a=5; # Affectation de la valeur 5 à la variable a
read a, b # Affectation de valeurs aux variables à partir des saisies clavier