Linux - 4
Linux - 4
Linux - 4
Programmation Shell
Les variables
Les conditions
Les boucles
Les fonctions
2
Programmation Shell
3
Programmation Shell
Gérer les processus (envoi en arrière-plan, mise en pause avec Ctrl + Z…)
Rediriger et chaîner les commandes (les fameux symboles >, <, |, etc.)
Le shell fournit toutes les fonctionnalités de base pour pouvoir lancer des
commandes
4
Gestion des processus et des flux de données
Introduction aux scripts shell
Une commande externe est un exécutable que le shell recherchera dans une
liste de chemins prédéfinis, le PATH, puis exécutera en tant que processus ls.
5
Programmation Shell
6
Programmation Shell
Si vous voulez essayer un autre shell, comme ksh par exemple, vous pouvez
le télécharger comme n'importe quel paquet (apt-get install ksh, chsh,
bin/ksh…
7
Programmation Shell
8
Programmation Shell
Le PATH est une variable système qui indique où sont les programmes
exécutables sur votre ordinateur. Si vous tapez echo $PATH vous aurez la
liste de ces répertoires « spéciaux ».
9
Programmation Shell
Les Variables
Déclaration et affectation
Une variable est une donnée identifiée par un nom. Le nom d’une variable
est une suite de caractères alphanumérique.
La taille d'un nom est en principe illimite (il ne faut pas abuser non plus)
10
Programmation Shell
Les Variables
Une variable est déclarée des qu'une valeur lui est affectée. L'affectation
est effectuée avec le signe =, sans espace avant ou après le signe.
exemple: var=Bonjour.
la commande echo affiche dans la console tous les paramètres qu'elle reçoit
echo –e : Activer le retour à la ligne \n.
Pour afficher une variable, utiliser le nom précédé du symbole dollar $
Pour afficher à la fois du texte et la variable, faire attention
au « quottes ».
Exemple:
test=‘hello world'
echo $test
Echo ‘le message est $test‘ erreur
Echo ‘’le message est $test‘’
11
Programmation Shell
Les Variables
Exemple:
read nom
echo "Bonjour $nom !’’
12
Programmation Shell
Les Variables
13
Programmation Shell
Les Variables
Les variables d'environnement
Les variables d'environnement sont des variables que l'on peut utiliser dans
n'importe quel programme. On parle aussi parfois de variables globales. Vous
pouvez afficher toutes celles que vous avez actuellement en mémoire avec la
commande env :
Exemples:
SHELL : indique quel type de shell est en cours d'utilisation (sh, bash…)
PATH : une liste des répertoires qui contiennent des exécutables
EDITOR : l'éditeur de texte par défaut
HOME : la position de votre dossier home
PWD : le dossier dans lequel vous vous trouvez
OLDPWD : le dossier dans lequel vous vous trouviez auparavant.
14
Programmation Shell
Les Variables
Comme toutes les commandes, vos scripts bash peuvent eux aussi accepter
des paramètres.
Récupération des paramètres:
$# : contient le nombre de paramètres
$0 : contient le nom du script exécuté
$1 : contient le premier paramètre
$2 : contient le second paramètre
…;
Exemple:
#!/bin/bash
echo "Vous avez lancé $0, il y a $# paramètres"
echo "Le paramètre 1 est $1’’
./test.sh param1 param2 param3
Vous avez lancé ./test.sh, il y a 3 paramètres Le paramètre 1 est param1
15
Programmation Shell
Les Variables
Les tableaux
Le bash gère également les variables « tableaux ». Ce sont des variables qui
contiennent plusieurs cases:
Exemples:
tableau=('valeur0' 'valeur1' 'valeur2')
${tableau[2]}
#!/bin/bash
tableau=('valeur0' 'valeur1' 'valeur2')
tableau[5]='valeur5'
echo ${tableau[*]}
16
Programmation Shell
Instruction if
Syntaxe 1 : Syntaxe 2 :
if [ condition ] if [ condition ]
then then
action1 action1
fi else
action2
fi
Instructions if imbriquées
if [ condition 1 ]
then
action1
elif [ condition 2 ]
then
action2
elif [ condition 3 ]
action3
...
else
actionN
Fi
Inversement du test: if [ !condition ]
18
Programmation Shell
Instructions case
case valeur_de_variable in
val1)
commandes
;;
val2)
commandes
;;
...
*)
commandes
esac
19
Programmation Shell
Condition Signification
Condition Signification
$num1 -eq $num2 Vérifie si les nombres sont égaux (equal). À ne pas
confondre avec le « = » qui, lui, compare deux chaînes
de caractères.
$num1 -ne $num2 Vérifie si les nombres sont différents (nonequal).
Encore une fois, ne confondez pas avec « != » qui est
censé être utilisé sur des chaînes de caractères.
$num1 -lt $num2 Vérifie sinum1est inférieur ( < ) ànum2(lowerthan).
$num1 -le $num2 Vérifie sinum1est inférieur ou égal ( <= )
ànum2(lowerorequal).
$num1 -gt $num2 Vérifie sinum1est supérieur ( > ) ànum2(greaterthan).
$num1 -ge $num2 Vérifie sinum1est supérieur ou égal ( >= )
ànum2(greaterorequal).
21
Programmation Shell
Les structures alternatives
Tests des fichiers
Condition Signification
Exercice:
Ecrire un script qui demande à l'utilisateur d'entrer le nom d'un
répertoire et qui vérifie si c'en est bien un.
#!/bin/bash
read -p 'Entrez un répertoire : ' repertoire
if [ -d $repertoire ]
then
echo ’Bien, vous avez entrer un répertoire’
else
echo ’ce n’est pas un répertoire...’
fi
23
Programmation Shell
Les structures alternatives
&& : signifie « et »
|| : signifie « ou »
Exemple: if [ condition1 ] && [ condition2 ]
Exercice:
Ecrire un script shell qui nous informe:
si le fichier accepte au moine un paramètre et si le premier paramètre vaut
MID2017 afficher le message ‘ vous avez trouvez le mot de passe‘ si non
afficher ‘mot de passe erroné’.
#!/bin/bash
if [ $# -ge 1 ] && [ $1 = ‘MID2017' ]
then
echo ’’msg1"
else
echo ’’msg2’’
fi 24
25
Programmation Shell
Instruction for
Exemple :
for file in *.sh for fichier in `ls`
do do mv $fichier $fichier-old
cat $file done
Done
Exercice:
Renommer tous les fichiers du répertoire actuel en leur ajoutant un
suffixe.(-mid).
26
Programmation Shell
Exemple:
1) Que fait le script suivant?
#!/bin/bash
while [ -z $reponse ] || [ $reponse != ‘DWAM2018' ]
do read -p ‘Ecrire DWAM2018 : ' reponse
done
27
Programmation Shell
Les Fonctions
28
Programmation Shell
Exercices
Exercices:
1) La boucle while
Ecrire un programme shell qui affiche les arguments du programme, dans
l'ordre d'apparition (1er argument en premier). Si le programme n'a aucun
argument, afficher « sans argument ».
Indication : Utilisez la commande shift. (décalage des paramètres)
2) La boucle for
Ecrire un programme shell qui affiche tous les sous-répertoires du répertoire
courant, en utilisant une boucle.
29
Merci de votre
attention
30
Programmation Shell
Solutions:
Exercice 1 Exercice 2:
#!/bin/sh #!/bin/sh
if [ $# -eq 0 ]; then for rep in *; do # pour chaque fichier "rep"
echo "sans argument" du repertoire courant
exit 0 if [ -d "$rep" ]; then # si rep est un repertoire
fi echo $rep # affiche rep
fi
while [ $# -gt 0 ]; do
done
echo $1
shift
done
31