0% ont trouvé ce document utile (0 vote)
3 vues40 pages

Définition et Utilisation des Scripts

Transféré par

fatna.elmendili
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)
3 vues40 pages

Définition et Utilisation des Scripts

Transféré par

fatna.elmendili
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

Structure d’un script

 Définition:
 Un script est un fichier contenant un ensemble de commandes
exécutées séquentiellement
 Sous forme de fichier texte contenant les commandes
 Le script ne peut être exécuté que par un interpréteur
 « /bin/bash » pour le shell bash
 Dans quels cas utilise-t-on les scripts ?
 Pour effectuer un travail répétitif
 Pour des tâches d’administration système
 Pour installer des programmes
 Au démarrage du système pour démarrer les services et
applications
 Bref : Tout le temps !!!
Créer et Exécuter un script
 Création d’un script:
 vim (vi) (par expemple) nom_script.bash (.sh)
 Exécuter le script:
 bash (sh) nom_script.bash (.sh)
 Format de Script:
 #! /bin/bash : pour préciser quel shell va exécuter le script

 # Commentaires : Fonction du script


 # Auteur :
 # Version :

 # Début du script
Les éléments de base
 Les commentaires:
Un commentaire sert à améliorer la lisibilité du script. Il est placé en
le faisant précéder du caractère dièse ("#").
 Exemple:
 # ceci est un commentaire
 LES VARIABLES:
 Une variable sert à mémoriser une information afin de la réutiliser
ultérieurement.
 Leur nom est représenté par une suite de caractères commençant
impérativement par une lettre ou le caractère ‘_’ et comportant
ensuite des lettres, des chiffres ou le caractère souligné ‘_’.
 Il ne doit pas correspondre à un des mots clefs du Shell.
Les éléments de base
 Il est important de noter que le Shell reconnaît, pour toute variable,
deux états :
 non définie (non-existence) : elle n'existe pas dans la mémoire
 définie (existence) : elle existe dans la mémoire ; même si elle est vide.
 L'affectation – L'accès:
 Les variables simples
 Syntaxe: variable=valeur
 L'accès au contenu de la variable s'obtient en faisant précéder le nom de la
variable du caractère "$".
 Exemple:
 filiere="LST RTT" ;
 echo $filiere;
 #Résultat= LST RTT
Les éléments de base
 Les tableaux:
 Syntaxe:
 variable[n]=chaîne # instanciation
 variable=(chaîne1 chaîne2 …)
 L'indice "n" que l'on spécifie entre les crochets doit être
impérativement positif ou nulle.
 ${mon_tableau[index]} # appel d'un élément
 ${mon_tableau[*]} # appel de l'ensemble du tableau
 ${mon_tableau[@]} # appel de l'ensemble du tableau
 ${!mon_tableau[*]} # récupérer les index du tableau
 ${#mon_tableau[*]} # récupérer le nombre d’éléments du tableau
 afficher la variable du tableau retourne la valeur du premier élément du
tableau: ${mon_tableau} = ${mon_tableau[0]}
Les éléments de base
 N.B: Bash autorise des opérations de tableaux sur des variables, même si
les variables ne sont pas explicitement déclarées en tant que tableau:
 mon_tableau= "LST RTT "
 echo ${mon_tableau[@]} # LST RTT
 echo ${mon_tableau[*]} # LST RTT
 echo ${mon_tableau[0]} # LST RTT
 La commande unset permet de supprimer un élément du tableau ou tous
les éléments de tableau:
 unset mon_tableau[index] #supprimer un élément du tableau
 unset mon_tableau #supprimer tous les éléments du tableau

 Exemple:
 tab=(" LST " " RTT " " FSTS ");
 echo " val 0 = ${tab[0]} ";
 echo " affichage de l’ensemble du tableau ${tab[*]} " ;
Arguments d’un script
 a. Paramètres de position
Les paramètres de position sont aussi des variables spéciales utilisées lors
d’un passage de paramètres à un script.

Variable Contenu
$0 Nom de la commande (du script).
$1…$n $1,$2,$3...$9 Les neuf premiers
paramètres passés au script.
Si (n>9 ) Alors ${n}
$# Nombre total de paramètres passés au
script.
$* Liste de tous les paramètres au format
"$1 $2 $3 ...".
$@ Liste des paramètres sous forme
d’éléments distincts "$1" "$2" "$3" ...
Arguments d’un script
 Exemple:
 [Link]:
 echo "affichages des arguments de position d’un script";
 echo "Nombre total de paramètres passés au script: $# ";
 echo " nom de script : $0 "
 echo " argument N° 1: $1 ";
 echo " argument N° 2: $2 ";
 echo " argument N° 3: $3 ";
 echo " argument N° 10: ${10} ";
 # Exécution: bash [Link] arg1 arg2 arg3….arg10
 #Résultat:
 affichages des arguments de position d’un script
 Nombre total de paramètres passés au script: 3
 nom de script : [Link]
 argument N° 1: arg1
 argument N° 2: arg2
 argument N° 3: arg3
 argument N° 10: arg10
Arguments d’un script
 b. Redéfinition des paramètres:
 l’instruction set permet de redéfinir le contenu des variables de position.
Avec :
 set valeur1 valeur2 valeur3 ...
 $1 prendra comme contenu valeur1, $2 valeur2 et ainsi de suite.
 Exemple:
 [Link]:
 echo " affichages des arguments de position d’un script avant la redéfinition ";
 echo " argument N° 1: $1 ";
 echo " argument N° 2: $2 ";
 echo " argument N° 3: $3 ";
 set val1 val2 val3
 echo " affichages des arguments de position d’un script après la redéfinition ";
 echo " argument N° 1: $1 ";
 echo " argument N° 2: $2 ";
 echo " argument N° 3: $3 ";
Arguments d’un script
 Exemple:
 Exécution: bash [Link] arg1 arg2 arg3
 affichages des arguments de position d’un script avant la redéfinition ;
 argument N° 1: arg1 ;
 argument N° 2: arg2 ;
 argument N° 3: arg3 ;
 affichages des arguments de position d’un script après la redéfinition ;
 argument N° 1: val1 ;
 argument N° 2: val2 ;
 argument N° 3: val3 ;
Saisie de l’utilisateur
 La commande echo permet d'afficher une chaîne de caractères ou le
contenu de variables sur la sortie standard.
 La commande read permet à l’utilisateur de saisir une chaîne et de la
placer dans une ou plusieurs variable.
 La saisie est validée par [Entrée].
 Syntaxe:
read var1 [var2 ...]
 Si plusieurs variables sont précisées, le premier mot ira dans var1, le second
dans var2, et ainsi de suite.
 S’il y a moins de variables que de mots, tous les derniers mots vont dans la
dernière variable.
 Exemple:
echo " Entrer une valeur " ;
read reponse;
echo "valeur=$reponse";
Substitution de commande
 Permet de placer le résultat de commandes simples ou complexes dans
une variable.
 Vous placez les commandes à exécuter entre des parenthèse précédées
d’un $:
 Syntaxe: $(commande à exécuter)
 Exemple:
 var=$(ls);
 echo $var;
 Ne confondez pas les accolades et les parenthèses:
 Les premières isolent les variables.
 les secondes effectuent la substitution des commandes.
 NB: Attention : Il ne faut pas avoir d'espaces de part et d'autres du signe=
Calculs et expressions
 a. expr:
 La commande expr permet d’effectuer des calculs sur des valeurs
numériques, des comparaisons, et de la recherche dans des
chaînes de texte.
• Syntaxe: expr $nbr1 opérateur $nbr2
expr $chaine : expression régulière
Opérateur Rôle
+ Addition
- Soustraction.
\* Multiplication. L’étoile étant reconnue par
le shell comme un wildcard, il faut la
verrouiller avec un antislash : \*.
/ Division.
% Modulo.
!= Différent. Affiche 1 si différent, 0 sinon.
= Égal. Affiche 1 si égal, 0 sinon.
Calculs et expressions
Opérateur Rôle
\< Inférieur. Affiche 1 si inférieur, 0 sinon.
\> Supérieur. Affiche 1 si supérieur, 0 sinon.
\<= Inférieur ou égal. Affiche 1 si inférieur ou
égal, 0 sinon
\>= Supérieur ou égal. Affiche 1 si supérieur ou
égal, 0 sinon.
: comparaison des deux arguments (renvoie
le nombre de caractères en commun)
…… ……

Exemple: expr 7 + 3
#résultat 10
expr 7 \* 3
# résultat 21
a=$(expr 13 - 10)
echo $a;
# résultat 3
Calculs et expressions
 Calculs avec bash
 Le shell peut évaluer des expressions arithmétiques
délimitées par $(( ))
 Syntaxe:
 $(( $var1 opérateur $var2))

Opérateur Rôle
+ Addition
- Soustraction
* Multiplication
/ division
% Modulo
!= Différent. Affiche 1 si différent, 0 sinon.
Calculs et expressions
Opérateur Rôle
< Inférieur. Affiche 1 si inférieur, 0 sinon.
> Supérieur. Affiche 1 si supérieur, 0 sinon.
<= Inférieur ou égal. Affiche 1 si inférieur ou
égal, 0 sinon
>= Supérieur ou égal. Affiche 1 si supérieur ou
égal, 0 sinon.
….. ……

 Exemple:
 n=2
 echo $(( n + 1 ))
 p = $(( n * 4 / 2 ))
 echo $p
 #resultat=3
 #Resultat=4
Exercice
 Ecrire un script qui affiche pour deux nombres saisis par
l’utilisateur :
 la somme
 Le produit
 Le quotient
 Le modulo
 La différence
Correction
 #!/bin/bash
 echo "entrez les deux valeurs " ;
 read nbr1 nbr2;
 somme=$(expr $nbr1 + $nbr2);
 produit=$(expr $nbr1 \* $nbr2);
 quotient =$(expr $nbr1 / $nbr2);
 modulo =$(expr $nbr1 % $nbr2);
 difference =$(expr $nbr1 - $nbr2);
 echo " la Somme= $somme ";
 echo " le Produit = $produit";
 echo " le quotient = $quotient ";
 echo " le Modulo = $modulo ";
 echo " la Différence= $difference ";
Tests de conditions
 La commande test permet d’effectuer des tests de conditions.
 Le résultat est récupérable par la variable $? (code retour).
 Si ce résultat est 0 alors la condition est réalisée.
 Tests sur une chaîne:
 test -z "variable" : zero, retour OK si la variable est vide :
a=
test -z "$a" ;
echo $?
#Résultat= 0
 test -n "variable" : non zero, retour OK si la variable n’est pas vide (texte
quelconque):
a=
test -n "$a" ;
echo $?
#Résultat= 1
Tests de conditions
 test "variable" = chaîne OK(0) si les deux chaînes sont identiques:
 a="RTT";
 test "$a"="RTT" ;
 echo $?
 #Résultat=0
 test "variable" ! = chaîne : OK si les deux chaînes sont différentes:
 a="RTT";
 test "$a"="LST";
 echo $?
 #Résultat=0

 NB: Attention à bien placer vos variables contenant du


texte entre guillemets
Tests de conditions
 Tests sur les valeurs numériques:
Les chaînes à comparer sont converties en valeurs numériques.
 syntaxe :
 test valeur1 option valeur2
 les options sont les suivantes :

Option Rôle
-eq Equal : égal

-ne Not Equal : différent


-lt Less than : inférieur
-gt Greater than : supérieur
-ge Greater or equal : supérieur ou égal
-le Less or equal : inférieur ou égal
Tests de conditions
 Exemples:
 a=10
 b=20
 test "$a" -ne "$b" ;
 echo $?
# Résultat= 0
 test "$a" -ge "$b" ;
 echo $?

# Résultat= 1
 test "$a" -lt "$b " && echo "$a est inferieur a $b "

# Résultat= 10 est inferieur a 20


Tests de conditions
 Tests sur les fichiers:
 La syntaxe est :
 test option nom_fichier
Option Rôle

-f Fichier normal
-d Un répertoire.
-c Fichier en mode caractère.
-b Fichier en mode bloc.
-p Tube nommé (named pipe).
-w Autorisation en écriture.
-r Autorisation en lecture.
Tests de conditions
Tests sur les fichiers:
La syntaxe est :
test option nom_fichier
Option Rôle
-x Autorisation en exécution.
-s Fichier non vide (au moins un
caractère).
-e Le fichier existe.
-L Le fichier est un lien symbolique.
-u Le fichier existe, SUIDBit positionné.
-g Le fichier existe SGIDBit positionné.
Exemple :
echo " test sur les fichiers " ;
touch [Link];
test –f [Link] && echo " file normal existe " ;
Tests combinés par des critères ET, OU, NON
 Vous pouvez effectuer plusieurs tests avec une seule
instruction.

Critère Action
a AND, ET logique
-o OR, OU logique
! NOT, NON logique

test -d "rep1" -a -w "rep1" && echo "rep1: répertoire, droit en écriture«

#Résultat: rep1: répertoire, droit en écriture


Structures de contrôle
 if ... then ... else:
 La structure if …then …else …fi est une structure de contrôle
conditionnelle.
 Syntaxe 1:
if <commandes_condition>
then
<commandes exécutées si condition réalisée>
fi
 Syntaxe 2:
if <commandes_condition>
then
<commandes exécutées si condition réalisée>
else
<commandes exécutées si condition n’est pas réalisée>
fi
Structures de contrôle
 Exemple 1:
 a= "RTT"
 if test "$a" = "RTT"
then
echo " les deux chaînes sont égales "
 fi
 #Résultat= les deux chaînes sont égales
 Exemple 2:
 a= "RTT"
 if test "$a" = "LST"
then
echo " les deux chaînes sont égales "
 else
echo " les deux chaînes sont pas égales "
 fi
 #Résultat= les deux chaînes sont pas égales
Structures de contrôle
 Instructions if imbriquées:
 Syntaxe 3:
if [ condition 1 ]
then
action1
elif [ condition 2 ] # elif (contraction de else if, qui signifie « sinon, si... »), qui
#est facultatif et marque une condition alternative
then
action2
elif [ condition 3 ]
action3
...
else
actionN
fi
Attention aux espaces après le [ et avant le ]. Vous remarquerez aussi qu'il n'y a
pas de then après le else
Structures de contrôle
 Choix multiples case:
 La commande case ... esac permet de vérifier le contenu d’une variable
ou d’un résultat de manière multiple.
 Syntaxe:
 case Valeur in
 Modèle1) Commandes ;;
 Modèle2) Commandes ;;
 *) action_defaut ;;
 esac
 Le modèle est soit un simple texte, soit composé de caractères spéciaux
 Chaque bloc de commandes lié au modèle doit se terminer par deux points-
virgules
 Dès que le modèle est vérifié, le bloc de commandes correspondant est
exécuté
 L’étoile en dernière position (chaîne variable) est l’action par défaut si aucun
critère n’est vérifié. Elle est facultative.
Structures de contrôle
caractères spéciaux:

Caractère Rôle
* Chaîne variable (même vide)

? Un seul caractère

[...] Une plage de caractères

[!...] Négation de la plage de caractères

| OU logique
Structures de contrôle
 Exemple:
echo " entre le nom du fichier ";
read nom;
case $nom in
a*)
echo "Commence par a«
;;
b*)
echo "Commence par b«
;;
fic[123])
echo "fic1 fic2 ou fic3“
;;
*)
echo "Commence par n’importe "
;;
 esac
Les boucles
 Elles permettent la répétition d’un bloc de commandes soit un
nombre limité de fois, soit conditionnellement.
 Toutes les commandes à exécuter dans une boucle se placent
entre les commandes do et done.
 Boucle for:
 La boucle for ne se base pas sur une quelconque incrémentation
de valeur mais sur une liste de valeurs, de fichiers ...
 Syntaxe:
for var in liste
do
commandes à exécuter
done
Les boucles
 Boucle for:
 Exemple: lister le contenu de la commande « ls »:
var=$(ls);
echo " liste des fichiers et dossiers ";
for info in $var
do
echo " $info ";
done
Les boucles
 Boucle while:
 La commande while permet une boucle conditionnelle « tant que ».
 Tant que la condition est réalisée, le bloc de commande est exécuté.
 On sort si la condition n’est plus valable.
 Syntaxe:
while condition
do
commandes
done
 ou :
while
bloc d’instructions formant la condition
do
commandes
done
Les boucles
 Exemple:
var=" ";
while [ "$var" != "fin" ]
do
echo "Variable d’entrée #1 (quitte avec fin) ";
read var;
echo "variable #1 = $var";
done
Attention : Il faut avoir d'espaces de part et d'autres
du signe !=
Les boucles
 Boucle untile:
 La commande until permet une boucle conditionnelle « jusqu’à »
 Dès que la condition est réalisée, on sort de la boucle.
 Syntaxe:
until condition
do
commandes
done
 ou :
until
bloc d’instructions formant la condition
do
commandes
done
Les boucles
Exemple:
var=" ";
until [ "$var" = "fin " ]
do
echo "Variable d’entrée (quitte avec fin) ";
read var;
echo " la variable entrée est = $var";
done
 Attention : Il faut avoir d'espaces de part et d'autres du
signe =
Les boucles
 Boucle select:
 La commande select permet de créer des menus simples, avec
sélection par numéro.
 Si la valeur saisie est incorrecte, une boucle s’effectue et le menu
s’affiche à nouveau. Pour sortir d’un select il faut utiliser un
break.
Syntaxe:
select variable in liste_contenu
do
traitement
done
Les boucles
Si liste_contenu n’est pas précisé, ce sont les paramètres de position
qui sont utilisés et affichés.
• Exemple:
echo "votre choix… " ;
select val in val1 val2 val 3 fin
do
if [ "$val" = "fin" ]
then break;
fi
echo " vous avez choisi $val " ;
done
Attention:
 aux espaces après le [ et avant le ].
 Il faut avoir d'espaces de part et d'autres du signe =

Vous aimerez peut-être aussi