0% ont trouvé ce document utile (0 vote)
2 vues42 pages

Chap5 Scripts Shell

Le chapitre 5 traite des scripts Shell, qui sont des ensembles de commandes exécutées dans un fichier. Il aborde les variables prédéfinies, les structures conditionnelles, les opérateurs sur les fichiers, les boucles, ainsi que des exemples pratiques et des exercices pour illustrer l'utilisation des scripts. Les concepts incluent le Shebang, les opérateurs de comparaison, et les instructions de contrôle de flux comme 'if', 'case', et les boucles 'for', 'while', et 'until'.

Transféré par

aharram.lamiae
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues42 pages

Chap5 Scripts Shell

Le chapitre 5 traite des scripts Shell, qui sont des ensembles de commandes exécutées dans un fichier. Il aborde les variables prédéfinies, les structures conditionnelles, les opérateurs sur les fichiers, les boucles, ainsi que des exemples pratiques et des exercices pour illustrer l'utilisation des scripts. Les concepts incluent le Shebang, les opérateurs de comparaison, et les instructions de contrôle de flux comme 'if', 'case', et les boucles 'for', 'while', et 'until'.

Transféré par

aharram.lamiae
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 5: Scripts Shell

Chapitre 5:
Scripts Shell
Chapitre 5: Scripts Shell

Introduction
 Un script Shell est un ensemble de commandes
répertoriées dans un fichier et ayant éventuellement des
paramètres. Le nom de la commande correspond au nom du
fichier.
 Les paramètres sont des chaînes de caractères identifiées
par leur position sur la ligne de commande.
➢ La liste des Shells disponibles sur votre machine :
$ cat /etc/shells
Chapitre 5: Scripts Shell

Variables prédéfinies
 Les variables suivantes sont prédéfinies dans les scripts Shell
:
➢ $* : listes des paramètres ; echo $* affiche la liste des paramètres
➢ $0, $1, $2, etc. : contiennent successivement : le nom du script,
valeur du premier argument ,valeur de deuxième argument
…etc.
➢ $# : variable contenant le nombre de paramètres ;
➢ $$ : numéro du processus courant ; pour l’afficher echo $$
➢ $!: numéro du dernier processus en arrière plan
➢ $?: valeur du code de retour de la dernière commande
exécutée.
Chapitre 5: Scripts Shell

Première ligne de votre Script(Shebang)


 La première ligne du script commence toujours par
"#!" suivi du chemin vers l'interpréteur de script, par
exemple sh, bash, etc.
 Cette séquence de caractères "#!" est appelée Shebang.
Elle sert à indiquer au système quel interpréteur de script il
doit utiliser pour exécuter le code contenu dans le fichier.
Syntaxe de Shebang:
#!<chemen vers l’interpréteur>
Exemple:
#!/bin/sh
Chapitre 5: Scripts Shell

Exemples:
1. le nom du script est sc1
# !/bin/sh
echo –n ‘Bonjour on est le ’
date +"%y/%m/%d"

Pour exécuter le script tapez: sh sc1


ou lui donner le droit d’exécution en utilisant la
commande chmod:
chmod +x sc1 ou chmod u+x sc1
et pour son exécution tapez : ./sc1
Chapitre 5: Scripts Shell

Exemples:
2. le nom du script est sc2
Le script suivant illustre l'utilisation des variables
prédéfinies :
#!/bin/sh
echo 'nom du script :' $0
echo 'argument 1 :' $1
echo 'argument 2 :' $2
echo 'argument 3 :' $3
echo "nombre d'arguments :" $#
echo "tous les arguments:" $*
Chapitre 5: Scripts Shell

Exemple d'utilisation du script sc2:


$ sh sc2 aa bb cc
nom du script : sc2

argument 1 : aa
argument 2 : bb
argument 3 : cc
nombre d'arguments : 3
tous les arguments: aa bb cc
Chapitre 5: Scripts Shell

Structures conditionnelles
Chapitre 5: Scripts Shell

Structure conditionnelle simple


L'instruction if permet d'exécuter des instructions si une
certaine condition est vraie. Sa syntaxe est la suivante :
if [ condition(s) ]
then
action
fi
Rq: L'indentation n'est pas obligatoire mais très
fortement recommandée pour la lisibilité du code.
Chapitre 5: Scripts Shell

Structure conditionnelle complète


Syntaxe:
Exemple:

if [ condition ] if [ $# -eq 1 ]
then
then
echo "Le répertoire $1 a le contenu suivant : "
action1 ls $1
else else
echo 'Mauvais nombre de paramètres'
action2
fi
fi
Chapitre 5: Scripts Shell

Structures conditionnelles imbriquées


if [ condition1 ]
then Exemple:
action1
elif [ condition2 ] if [ $# -eq 1 ]
then
then echo "Le script a un seul paramètre "
action2 elif [ $# -eq 2 ]
elif [ condition3 ] then
then echo "Le script a deux paramètres "
action3 elif [ $# -ge 3 ]
then
else echo "Le script a trois paramètres ou
action4 plus "
fi fi
Chapitre 5: Scripts Shell

Opérateurs sur des fichiers

Le Shell étant souvent utilisé pour manipuler des fichiers, il offre


plusieurs opérateurs permettant de vérifier diverses conditions sur
ceux-ci :
➢Existence, dates, droits.
➢D'autres opérateurs permettent de tester des valeurs,
chaînes ou numériques.
Chapitre 5: Scripts Shell

Opérateurs sur des fichiers


Opérateur Description Exemple
-e fichier vrai si fichier existe if [ -e /etc/shadow ]
-d fichier vrai si fichier est un if [ -d /home/tp2 ]
répertoire
-f fichier vrai si fichier est un if [ -f bonjour.c ]
fichier ordinaire
-L fichier vrai si fichier est un lien if [ -L /home ]
symbolique
-r fichier vrai si fichier est lisible (r) if [ -r /home/ ]

-w fichier vrai si fichier est if [ -w /home/user2 ]


modifiable (w)
-x fichier vrai si fichier est if [ -x /home/user2 ]
exécutable (x)
Chapitre 5: Scripts Shell

Opérateurs de comparaison des nombres


Opérateur Description Exemple
num1 -eq num2 égalité (equal) if [ $nombre -eq 27 ]

num1 -ne num2 inégalité (not equal) if [ $nombre -ne 27 ]

num1 -lt num2 inférieur ( < less than) if [ $nombre -lt 27 ]

num1 -le num2 inférieur ou égal ( less or if [ $nombre -le 27 ]


equal )
num1 -gt num2 supérieur ( > greater than if [ $nombre -gt 27 ]
)

num1 -ge num2 supérieur ou égal ( if [ $nombre -ge 27 ]


greater or equal)
Chapitre 5: Scripts Shell

Opérateurs sur les chaînes de caractères


Opérateur Description Exemple
-z chaine vrai si la chaine est vide if [ -z $VAR ]

-n chaine vrai si la chaine est non if [ -n $VAR ]


vide

chaine1 = chaine2 vrai si les deux chaînes if [ $VAR = "ENSAT" ]


sont égales

chaine1 != chaine2 vrai si les deux chaînes if [ $VAR != "GI" ]


sont différentes

Remarque: Il est nécessaire d'entourer les variables de guillemets (") dans les
comparaisons.
if [ $var = " ENSA de Tétouan" ]
then
echo "OK"
fi
Chapitre 5: Scripts Shell

Exemple1 :

#!/bin/sh

if [ -f $1 ] ; then

echo " $1 est un fichier «

elif [ -d $1 ] ; then

echo " $1 est repertoire "


else
echo ‘’on sait pas trop sur $1 " ; exit 1
fi
Chapitre 5: Scripts Shell

Exemple2 :

#!/bin/sh
if [ $# -ne 1 ] ; then
echo " un seul paramètre est autorisé " ; exit 1
fi

Exemple3 :
#!/bin/sh
if [ ! –d $1 ] ; then
echo " $1 n’est pas un répertoire " ; exit 1
fi
Chapitre 5: Scripts Shell

Exercices

1)Ecrire un script Shell qui permet d’afficher le contenu


de 3 fichiers passés en paramètres s’ils ont le droit de
lecture.

2)Ecrire un script Shell qui compte le nombre de fichiers


ordinaires et de répertoires dans votre répertoire
courant.
3) Ecrire un script qui permet de compiler et d’exécuter
le programme C passé en paramètres.
Chapitre 5: Scripts Shell

1)
Chapitre 5: Scripts Shell

Exemple:
un script Shell qui compte le nombre de fichiers
ordinaires et de répertoires dans votre répertoire
courant.
Chapitre 5: Scripts Shell

3)
Chapitre 5: Scripts Shell

Choix multiple

L'instruction case permet de choisir une suite


d'instruction suivant la valeur d'une expression :
case "$x" in
Mon) echo "Lundi" ;;
Tue) echo "Mardi " ;;

*) echo "entrer un choix valable'‘;;
esac
Noter les deux ;; pour signaler la fin de chaque séquence
d'instructions.
Chapitre 5: Scripts Shell

Exemple:

#!/bin/sh
case $# in
0) echo " $0 sans argument" ;;
1) echo " $0 possède un argument" ;;
2) echo " $0 possède deux arguments" ;;
*) echo " $0 possède plus de deux arguments" ;;
esac
Chapitre 5: Scripts Shell

Exercice

Ecrire un script qui affiche le menu suivant :


Pour lister les fichiers Tapez 1
Pour lister les répertoires Tapez 2
Pour afficher les droits d’accès du répertoire courant
Tapez 3
Pour quitter Tapez 4
Entrez votre choix: 3
Vous avez choisi d’afficher les droits du rép. courant
Chapitre 5: Scripts Shell

Correction
Chapitre 5: Scripts Shell

Opérations sur des nombres

La commande expr offre la possibilité d’effectuer des


opérations arithmétiques sur des variables contenant des
nombres :
Exemple:
N1=1
N2=3
N3=$( expr $N1 + $N2 )
echo la somme est $N3
N.B : par défaut les variables sont des chaînes de
caractères
Chapitre 5: Scripts Shell

Opérations sur des nombres

Exemple 2 :
N1=1
N2=3
N3=$(( $N1 + $N2 ))
echo ‘la somme est’ $N3
Chapitre 5: Scripts Shell

Structures Répétitives
(Boucles)
Chapitre 5: Scripts Shell

Boucle for
Comme dans d'autres langages, la boucle for permet
d'exécuter une suite d'instructions avec une variable
parcourant la suite de valeurs.
Exemple :
for i in 2022 2023 2024
do
echo ‘calendrier de $i’
cal $i
done
affichera le calendrier de chaque année
Chapitre 5: Scripts Shell

Boucle for

On utilise fréquemment for pour énumérer des noms de


fichiers, comme dans cet exemple :
for fi in /etc/rc*
do
if [ -d $fi ]
then
echo "$fi (repertoire)"
else
echo "$fi (fichier) "
fi
done
Chapitre 5: Scripts Shell

Boucle for

Ou encore, pour traiter les arguments passés sur la ligne


de commande :

#!/bin/sh
for arg in $*
do
echo $arg
done
Chapitre 5: Scripts Shell

Boucle for
Il est aussi possible de parcourir des valeurs itératives
comme dans la plupart des langages de programmation à
l'aide de la boucle for. Pour cela, on peut utiliser la
commande seq comme suit :

Résultat du script:
Chapitre 5: Scripts Shell

Exercices

1) Ecrire un script Shell qui affiche le contenu de tous les


fichiers passés en paramètres.

2) Ecrire un script Shell, ayant n fichiers en paramètres,


qui donne le droit de lecture à ceux qui ne l’ont pas.

3) Ecrire un script Shell qui permet de modifier les


droits d’accès de tous les fichiers en 551 et de tous les
dossiers en 700 se trouvant dans le répertoire courant.
Chapitre 5: Scripts Shell

Correction
 1)
Chapitre 5: Scripts Shell

Correction
2
Chapitre 5: Scripts Shell

Correction
3
Chapitre 5: Scripts Shell

Boucle while
➢ Syntaxe:
while [ Condition(s) ]
do
commandes
done
➢ Exemple:
n=5 ; i=1
while [ $i –lt $n ] ; do
echo $i
i=$(( $i +1 ))
done
Chapitre 5: Scripts Shell

Boucle while
➢ Opérateurs Logiques:
-o : le OU logique ;
-a : le ET logique
➢ Exemple 2:
while echo –n " votre choix (1,2,3 ou 4) ?"
read choix
[ $choix –lt 1 –o $choix –gt 4 ] ; do
echo "\n Une valeur entre 1 et 4 svp !"
done
exit $choix
Chapitre 5: Scripts Shell

Boucle until-do

➢ Syntaxe de répéter :
until ….. do
done
➢ Exemple :
choix=0
until [ $choix –ge 1 –a $choix –le 4 ] ; do
echo –n " votre choix (1,2,3 ou 4) ? "
read choix
done
echo ‘’ bon choix’’
Chapitre 5: Scripts Shell

Exercices

➢ Ecrire un script Shell ayant deux paramètres un


nombre de départ et un nombre d’arrivée et qui affiche
tous les nombres compris entre ces deux valeurs.

➢ Ecrire un script Shell, ayant un fichier et deux nombres


l1 et l2 en paramètres ,qui affiche les lignes comprises
entre l1 et l2. ( avec l2>=l1)
Chapitre 5: Scripts Shell

Correction
1)
Chapitre 5: Scripts Shell

2)

Vous aimerez peut-être aussi