Script SHELL
Script SHELL
Script SHELL
M. Jean DIOKH
Certifié Linux Professional Institute ( LPIC-3 Core & LPIC-3 Security )
http://www.lpi.org/verify/LPI000201968/9ntq6grjtk
PROGRAMME
▪ Le principe
▪ Les exécutions
▪ Shebang
MASTER1/ESTM- M. DIOKH 2
PROGRAMME
Les variables
L'interactivité
▪ La commande read
MASTER1/ESTM- M. DIOKH 4
SCRIPT SHELL
Un système d'exploitation fournit au moins un shell ou d'une interface; ce qui vous permet de dire à
l'ordinateur ce qu'il doit faire.
Un shell permet d’exécuter des instructions que vous saisissez au clavier ou au sein d’un script et vous en
retourne les résultats. Il prend les commandes saisis par l’utilisateur et les interprète en une forme que
le noyau peut exécuter sur le matériel de l'ordinateur.
Les deux types shell les plus distingués sont le Graphical User Interface (GUI) et Command Line Interface
(CLI).
MASTER1/ESTM- M. DIOKH 5
SCRIPT SHELL
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.
Exemple: #!/bin/bash
MASTER1/ESTM- M. DIOKH 6
SCRIPT SHELL
MASTER1/ESTM- M. DIOKH 7
SCRIPT SHELL
Initialisation de variable:
classe=Master
echo $classe
echo $classe1
echo ${classe}1
DATE=$(date +%d%m%Y)
echo $DATE
MASTER1/ESTM- M. DIOKH 9
SCRIPT SHELL
MASTER1/ESTM- M. DIOKH 10
SCRIPT SHELL
Les paramètres:
#!/bin/bash
# srcipt2.sh
echo "Le nom de mon script est : $0"
echo "Vous avez passé $# paramètres"
echo "Voici la liste des paramètres $*"
echo " le premier paramètre $1"
echo " le deuxième paramètre $2"
./anomalie.sh un deux trois quatre cinq six sept huit neuf dix onze douze
La commande read lit son entrée standard et affecte la valeur saisie dans la variable passée en argument;
on peut avoir plusieurs variable
MASTER1/ESTM- M. DIOKH 14
SCRIPT SHELL
./script3.sh
MASTER1/ESTM- M. DIOKH 15
TEST
La commande test ou [ …. ]
La commande test permet de faire un test et de renvoyer 0 si tout s'est bien passé ou 1 en cas d'erreur.
La valeur retourne se trouve dans la variable $?
MASTER1/ESTM- M. DIOKH 16
TEST
MASTER1/ESTM- M. DIOKH 17
TEST
touch fichier1.txt
test -e fichier1.txt ou [ -e fichier1.txt ]
echo $?
test -x fichier1.txt ou [ -x fichier1.txt ]
echo $?
chmod a+x fichier1.txt
test -x fichier1.txt ou [ -x fichier1.txt ]
echo $?
MASTER1/ESTM- M. DIOKH 18
TEST
Exercice:
Faire un script qui demande à l’utilisateur de saisir le chemin d’un fichier et vérifier si le fichier existe.
MASTER1/ESTM- M. DIOKH 19
IF
#!/bin/bash
id=`id -u`
MASTER1/ESTM- M. DIOKH 21
IF
#!/bin/bash
# script 1
read -p " Entrer le nom du serveur: " serveur
if [ $serveur = "srv1" ]; then
echo "192.168.1.10"
else
echo "Adresse inconnue"
fi
MASTER1/ESTM- M. DIOKH 22
IF
#!/bin/bash
# script 3
if [ $(date +%u) -eq 7 ]
then echo "Sauvegarde complète"
else
echo "Sauvegarde incrémentale"
fi
MASTER1/ESTM- M. DIOKH 23
FOR
Cette boucle sert pour répéter les traitements un nombre de fois connu.
Syntaxe1:
for variable in *
do
Commande(s)
done
MASTER1/ESTM- M. DIOKH 24
FOR
Syntaxe2:
for ((initialisation;condition_darrêt;incrémentation));
do
Commande(s)
done
Exemple:
for ((i=0;i<=5;i++))
do
echo $i
done
MASTER1/ESTM- M. DIOKH 25
FOR
#!/bin/bash
#Table de multiplication
if [ $# -eq 0 ]; then
echo "donner un argument"
else for i in 1 2 3 4 5 6 7 8 9; do
expr $i \* $1
done
fi
MASTER1/ESTM- M. DIOKH 26
FOR
MASTER1/ESTM- M. DIOKH 27
WHILE
Cette boucle sert pour répéter les traitements un nombre de fois inconnu a priori.
Le test de continuité se fait au début de la boucle.
La boucle continue tant que la condition est vraie.
Syntaxe:
while [ condition ]
do
Commandes
done
MASTER1/ESTM- M. DIOKH 28
WHILE
Exemple:
Pour faire le test de lecture d’une valeur jusqu’à ce que l’utilisateur entre la valeur 5 :
#!/bin/bash
nbm=0
while [ $nbm -ne 5 ]; do
read -p "Entrez le nombre magique pour sortir: " nbm
done
MASTER1/ESTM- M. DIOKH 29
WHILE
Exemple:
Pour faire le test de lecture d’une valeur jusqu’à ce que l’utilisateur entre la valeur 5 :
#!/bin/bash
nbm=0
while [ $nbm -ne 5 ]; do
read -p "Entrez le nombre magique pour sortir: " nbm
done
MASTER1/ESTM- M. DIOKH 30
CASE
#!/bin/bash
echo "Le contenu du répertoire courant va être affiché."
read -p "Souhaitez-vous afficher aussi les fichiers cachés (oui/non) : " choix
case $choix in
oui) ls -a;;
non) ls ;;
*) echo "Veuillez répondre par oui ou par non.";;
esac
MASTER1/ESTM- M. DIOKH 31
CASE
#!/bin/bash
echo "Le contenu du répertoire courant va être affiché."
read -p "Souhaitez-vous afficher aussi les fichiers cachés (oui/non) : " choix
case $choix in
oui) ls -a;;
non) ls ;;
*) echo "Veuillez répondre par oui ou par non.";;
esac
MASTER1/ESTM- M. DIOKH 32
SELECT
La commande select est utilisée pour demander à un utilisateur de choisir une valeur et une seule dans
La commande select a deux arguments : la liste des valeurs proposées, et une variable dans laquelle sera
MASTER1/ESTM- M. DIOKH 34
SELECT
#!/bin/bash
do
done
MASTER1/ESTM- M. DIOKH 35