Académique Documents
Professionnel Documents
Culture Documents
Un shell n'est pas un simple interpréteur de commande mais il peut aussi exécuter des commandes
prises dans un fichier. Il existe plusieurs environnements console shell. Les principaux shells qui
existent :
sh : Bourne Shell. (Le shell original).
•bash : Bourne Again Shell. Une amélioration du Bourne Shell, disponible par défaut sous
Linux et Mac OS X.
•ksh : Korn Shell. Un shell puissant assez présent sur les Unix propriétaires, mais aussi
disponible en version libre, compatible avec bash.
•csh : C Shell. Un shell utilisant une syntaxe proche du langage C.
•tcsh : Tenex C Shell. Amélioration du C Shell.
•zsh : Z Shell. Shell assez récent reprenant les meilleures idées de bash, ksh et tcsh.
Un fichier contenant des commandes pour le shell ou un programme écrit dans le langage du shell
est appelé un script shell.
Un script shell peur comprendre des commandes, des variables et des structures de contrôle
(constructions conditionnelles et boucles).
La ligne " #!/bin/bash " indique que ce script doit être exécuté par le shell bash.
Le fichier contenant le script doit aussi être exécutable (bit "x" dans les permissions d’accès).
La commande chmod permet de modifier les permissions d'acces d'un fichier.
Pour rendre un fichier exécutable:
$ chmod u+x nom_du_fichier
#!/bin/bash
pwd
date
Pour insérer des commentaires dans le script, il suffit de précéder chaque ligne de commentaire du
caractère "#". Exemple:
#!/bin/bash
Les variables
Toute variable possède un nom et une valeur
<nom de la variable>=<la valeur de la variable>
Pour l'affichage d'une variable précéder son nom par le symbole dollar "$":
Exemple :
#!/bin/bash
i=10
echo " La valeur de la variable i est : $i"
message="Bonjour "
echo $message
read : La commande read permet de lire des variables. Elle demande à l'utilisateur de saisir du texte.
#!/bin/bash
read nom
echo " Bonjour $nom"
En shell les back quotes indiques au shell d’exécuter ce qui trouve à l’intérieur :
Exemple :
#!/bin/bash
rep=`pwd`
echo "vous êtes dans le répertoire $rep"
Exemple:
#!/bin/bash
Si la condition est correcte exécuter des instructions si non exécuter d'autres instructions.
#!/bin/bash
i=10
if [ $i -lt 20 ]
then
echo "i est inférieur à 20 "
else
echo "i est supérieur ou égale à 20 "
fi
Il existe deux principales façons de réaliser des tests pour évaluer une expression. Ces deux
méthodes sont l'utilisation de la commande test, et l'utilisation des crochets :
•test expression
•[ expression ]
Syntaxe de test :
test condition
Condition Signification
Vérifie si les deux chaînes sont identiques. Notez que bash est
$chaine1 = $chaine2 sensible à la casse : « b » est donc différent de « B ».
Il est aussi possible d'écrire « == » pour les habitués du langage C.
$chaine1 != $chaine2 Vérifie si les deux chaînes sont différentes.
-z $chaine Vérifie si la chaîne est vide.
-n $chaine Vérifie si la chaîne est non vide.
Exemple :
#!/bin/bash
if [ -z $1]
then
echo "pas de paramètres "
else
echo "le paramètre 1 est : $1 "
fi
i=10
if test $i -lt 20
then
echo "i est inférieur à 20 "
else
echo "i est supérieur ou égale à 20 "
fi
Une grande partie de la puissance du shell se déploie dans sa faculté de manipuler des fichiers.
Les principaux opérateurs disponibles sont :
•nature du fichier :
•-e (exists) : vérifie l'existence d'un fichier ;
•-f (file) : vérifie l'existence d'un fichier, et le fait qu'il s'agisse bien d'un fichier au
sens strict ;
•-d (directory) : vérifie l'existence d'un répertoire ;
•-L (link) : vérifie si le fichier est un lien symbolique ;
•attributs du fichier :
•-s (size) : vérifie qu'un fichier n'est pas vide ;
•droits sur le fichier :
•-r (readable) : vérifie si un fichier peut être lu ;
•-w (writable) : vérifie si un fichier peut être écrit ou modifié ;
•-x (writable) : vérifie si un fichier peut être exécuté ;
•comparaison de fichiers :
•-nt (newer than) : vérifie si un fichier est plus récent qu'un autre ;
•-ot (older than) : vérifie si un fichier est plus ancien qu'un autre.
Exemple :
#!/bin/bash
if [ -d $repertoire ]
then
echo "Le répertoire existe."
else
echo "Le répertoire n'existe pas."
fi
Opérateurs logiques
L'opérateur « ! »: Non
L'opérateur « && »: Et logique (l'opérateur « -a »)
L'operateu « || »: Ou logique (l'opérateur « -o »)
Exemple :
#!/bin/bash
Exemple de Elseif
#!/bin/bash
if [ $# -eq 1 ]
then
echo "Il existe un paramètre"
elif [ $# -eq 2 ]
then
echo "Il existe deux paramètres"
elif [ $# -gt 2 ]
echo "Il existe plus que deux paramètres"
else
echo "Il n'existe aucun paramètre"
fi
La structure case
Case : tester plusieurs conditions à la fois
Exemple :
#!/bin/bash
case $1 in
0)
echo "le parametre 1 est egal à 0"
;;
1)
echo "le parametre 1 est egal à 1"
;;
*)
echo "Je ne connais pas le contenu du parametre 1
!"
;;
esac
Exemple :
#!/bin/bash
case $1 in
"Chien" | "Chat" | "Souris")
echo "C'est un mammifère"
;;
"Moineau" | "Pigeon")
echo "C'est un oiseau"
;;
*)
echo "Je ne sais pas ce que c'est"
;;
esac
Opérateurs:
Opérateurs Signification
Opérateurs arithmétiques
$nb1 + $nb2 Addition
$nb1 - $nb2 Soustraction
$nb1 \* $nb2 Multiplication
$nb1 / $nb2 Division
$nb1 % $nb2 Modulo
Opérateurs de comparaison
$nb1 \> $nb2 VRAI si $nb1 est strictement supérieur à $nb2
$nb1 \>= $nb2 VRAI si $nb1 est supérieur ou égal à $nb2
$nb1 \< $nb2 VRAI si $nb1 est strictement inférieur à $nb2
$nb1 \<= $nb2 VRAI si $nb1 est inférieur ou égal à $nb2
$nb1 = $nb2 VRAI si $nb1 est égal à $nb2
$nb1 != $nb2 VRAI si $nb1 est diférent de $nb2
Opérateurs logiques
Opérateurs Signification
$chaine1 \& $chaine2 VRAI si les 2 chaines sont vraies
$chaine1 \| $chaine2 VRAI si l'une des 2 chaines est vraie
Opérateurs divers
-$nb1 Opposé de $nb1
\( expression \) Regroupement
$chaine : expression_reguliere Compare la chaine avec l'expression régulière
Exemple :
#!/bin/bash
i=`expr $1 + $2`
echo "$1 + $2 = $i"
#!/bin/bash
#!/bin/bash
listedefichiers=`ls`
#!/bin/bash
for (i=1;i<10;i++)
do
m=`expr $1 + $i`
echo "$1 + $i = $m"
done