23/09/2024
Passage de paramètre à un script bash shell
Pré-requis
Terminal bash sous linux
commandes de bases Linux
Utiliser vi ou vim
But
Comprendre le passage de paramètre
Titre du répertoire du TP : TPSHELLPP (tp shell passage de paramètre)
En shell comme dans tous les langages on peut passer des arguments
par exemple :
ls -l
l'argument passé a ls est -l
exemple d'un code , ici test pour comprendre le passage de paramètres
Exemple avec le script test suivant:
fichier test.sh
#!/bin/bash
echo "Bonjour le monde !"
echo "\$#:" $#
echo "\$1:" $1
echo "\$2:" $2
chmod +x file.sh # pour rendre exécutable file
$# : contient le nombre d'arguments passés , ici 3 avec test 5 6 9
$0 : contient le nom du programme
$x : contient l'argument passé au rang x
Ecrire un programme bash , bonjour.sh
./bonjour.sh caroline Dorian
bonjour Dorian caroline
#!/bin/bash
#
# exercice 1
echo "Bonjour $2 $1"
------------------------------------------------------------------------------------------------------
bruno@workboot:~/Works/TP BASH $ chmod +x bonjour.sh
bruno@workboot:~/Works/TP BASH $ ./bonjour.sh caroline Dorian
Bonjour Dorian caroline
la variable $?
bruno@elliott:~$ bash
bruno@elliott:~$ bash
bruno@elliott:~$ ps
PID TTY TIME CMD
5396 pts/1 00:00:00 bash
5531 pts/1 00:00:00 bash
5536 pts/1 00:00:00 bash
5541 pts/1 00:00:00 ps
bruno@elliott:~$ exit 3
exit
bruno@elliott:~$ echo $?
3
bruno@elliott:~$
la variable $? contient le retour ...
bruno@elliott:~$ ls --duchmol
ls : option non reconnue '--duchmol'
Saisissez « ls --help » pour plus d'informations.
bruno@elliott:~$ echo $?
2
true renvoi 0
false renvoi 1
Attention 0 c'est Ok, différent de 0 non !!
bruno@elliott:~$ true
bruno@elliott:~$ echo $?
0
bruno@elliott:~$ false
bruno@elliott:~$ echo $?
1
bruno@elliott:~$
Exemple de code renvoyant un "code d'erreur" si pas bruno !!! le Boss
un code d'erreur sera différent de 0
#!/bin/bash
echo -n "votre prenom en minuscule svp:"
read nom
if [ $nom == "bruno" ]
then
echo "Salut Boss !"
exit 0
else
echo "T Ki ?"
exit 1
fi
La fonction ET en shell &&
La fonction OU en shell ||
action1 && action2
l'action2 pourra s’exécuter si l'action1 c'est bien déroulée.
action1 || action2
l'actions=2 pourra s’exécuter si l'action1 ne c'est pas bien terminée. (code de sortie <>0 )
#!/bin/bash
if [ $1 == "bruno" ]
then
echo "Salut Boss !"
exit 0
else
echo "T Ki ?"
exit 1
fi
bruno@elliott:~/Works/TPSHELLSI$ ./code.sh tt && ls
T Ki ?
# FAUX donc pas de ls
bruno@elliott:~/Works/TPSHELLSI$ ./code.sh bruno && ls
Salut Boss !
bruno.sh chainevide.sh code.sh siexemple.sh
# VRAI donc on fait le ls !
bruno@elliott:~/Works/TPSHELLSI$ ./code.sh bruno || ls
Salut Boss !
VRAI donc on ne fait pas le ls
bruno@elliott:~/Works/TPSHELLSI$ ./code.sh tt || ls
T Ki ?
bruno.sh chainevide.sh code.sh siexemple.sh
FAUX donc on fait le ls
bruno@elliott:~/Works/TPSHELLSI$