Syntaxe Bash¶
1. Shebang¶
Permet de définit l'interpréteur qu'on veut appliquer au script. Il se place en tout début de script, et indique le chemin complet de l'exécutable.
#!/bin/bash
2. Structures de contrôle¶
2.1 for .... do .... done¶
Les actions entre do
et done
sont répétées pour chaque élément trouvées dans la liste qui suit for
.
Chacun des éléments est enregistré dans une variable i
qui est incrémentée à chaque passage de la boucle.
for i in liste ; do
action1 ;
action2 ;
done
2.2 if .... then .... elif ... else ... fi¶
ces variable permete par exemple de faire réagir le script de manière différente, selon la réponse de l'utilisateur à une question (si ... alors .... sinon si .... sinon ....fin)
until [[ $ouinon == "y" || $ouinon == "n" ]] ; do
echo -n "voulez-vous voir le modele de votre carte graphique Y/n : "
read ouinon
if [ "$ouinon" = "Y" ] || [ "$ouinon" = "y" ]; then
GRAPHIC_CARD = $(lspci | grep VGA | cut -d: -f3 |tail -c +2)
echo "votre carte graphique est une : $GRAPHIC_CARD
elif [ "$ouinon" = "N" ] || [ "$ouinon" = "n" ]; then
echo "OK, bye"
else
echo "Il faut écrire "y" or "n" ;
fi
done
2.3 while .... do .... done¶
while = tant que
2.4 until .... do .... done¶
until = jusqu'à ce que
3. Les outils pour la manipulation du texte¶
3.1 cut¶
3.2 tail¶
3.3 head¶
3.4 sed¶
La commande sed permet d'éditer une chaine de caracteres d'un fichier. Elle comprend des arguments et une subcommand. L'argument -i permet de faire le changement in place, s ou d pour substitute ou delete et g pour global.
sed 's/string1/string2/g'
sed -i 'd/string1/string2/g'
3.5 grep¶
La commande grep permet de filter des lignes, elle est généralement utilisé avec | . On met l'élement (lettre, chiffre ou mot) qu'on veut filtrer juste apres grep.
ls | grep ^a
3.6 tr¶
La commande tr permet de supprimer des caracteres identique et consécutifs.
tr -s ''
3.7 tee¶
La commande tee nous permet d'écrire les sorties d'une commande (sortie standard et sortie d'erreur) dans un fichier, tout en laissant les sortie s'afficher sur le terminal.
LOG=/home/admin/mon-log.txt
ma_commande 2>&1 |tee $LOG
3.8 wc¶
Compteur (de lignes, de mots...)
wc -l myfile.txt # donne le nombre de lignes du fichier
3.9 awk¶
#awk -f {"substring"}
4. Bashism¶
4.1 string replacement ${"string"##"substring"}¶
4.2 Exécution conditionnelle $$ ||¶
4.3 comparaisons [[ "string" == "otherstring" ]] ; [[ number -eq number ]]¶
5. Les fonctions¶
5.1 Déclaration d'une fonction¶
Une fonction est définit en lui donnant un nom quelconque avec la syntaxe ci dessous.
random_function(){
}
5.2 Appel d'une fonction¶
Dans un script une fonction est simplement appelé par son nom.
random_function
5.3 Les arguments¶
$0
: Contient le nom du scriptsiska@siska-pc:~/cours/doc/docs/cours/scripting$ cat script.sh #!/bin/bash echo $0 siska@siska-pc:~/cours/doc/docs/cours/scripting$ ./script.sh ./script.sh siska@siska-pc:~/cours/doc/docs/cours/scripting
$*
: contient tout les arguments dans une chaine de charactère$#
: contient le nombre d'arguments$?
: contient le code de retour de la dernière commande$$
: contient le PID du shell qui exécute le script$!
: contient le PID de la dernière commande lancée ```