Introduction aux Scripting shell
- Automatiser les taches
- Gagner du temps
- Simplifier la tâche de l’administrateur système
- Comprendre les scripts du système d’exploitation Unix et Linux
1- Déclarer les variables
Mavariable= « valeur »
$#,$@,$*,$0,$1,$2…
Exemple :
gedit exo1.sh
# !/bin/bash
Echo $0
Echo $1
Echo $2
Echo $3
Echo $@
Echo $#
Echo $*
Chmod +x exo1.sh
./exo1.sh op1 op2 op3 op4
$ ?:donne le résultat de la dernière commande exécutée
et retourne 0 (true) ou 1 (false)
$$ :donne le pid du processus qui a lancé le scripts
Exemples :
Test 2 –lt 3 (2<3)
Echo $ ? (0 oui)
Test 2 –gt 3
Echo $ ? (1 non)
[ 2 –gt 3 ] (Test = [ ])
Echo $ ?
[ -b /dev/sda1 ] (est ce que le périphérique est de type block)
[ -z « »] (tester une chaine vide ou pas)
[ -z « $PATH »]
1
2- Les expressions mathématiques
Expr 2 + 3
R=$((2 + 3))
Echo $r
3- Les compositions
- Séquentielle : cmd1 ; cmd2 (echo « bonjour » ;echo « à tous »
- Parallèle : cmd1 & cmd2 (cmd1 en arrière-plan)
- Sur erreur : || [ -x /bin/bash ] || echo « ok » (est ce que le fichier est
exécutable)
- Sur succès : &&( [ -x /bin/bash ] &&echo « ok »
4- Les alternatives si-sinon
If test then fi
Exemple :
gedit exo2.sh
# !/bin/bash
If [ $1 –lt 10 ]
Thenecho « plus petit à 10 »
Elseecho « plus grand à 10 »
Fi
Chmod +x exo2.sh
./exo2.sh 15
Avec elif : (else if)
gedit exo3.sh
# !/bin/bash
If [ $1 –lt 10 ]
Then echo « plus petit à 10 »
Elif [ $1 –lt 20 ]
Then echo « entre 10 et 20 »
Elif [ $1 –lt 30 ]
Then echo « entre 20 et 30 »
Else echo « plus grand à 30 »
Fi
2
Chmod +x exo3.sh
./exo3.sh 15
5-Case
gedit exo4.sh
# !/bin/bash
Case $1 in [0-9])
Echo « est un chiffre » ;;
[ a-Z])
Echo « est une lettre » ;;
*) echo « autre chose » ;;
Esac
Chmod +x exo4.sh
./exo4.sh 1 (ou a ou !)
5- La boucle : for
gedit exo5.sh
# !/bin/bash
For i in 1 2 3 Do echo $i done
gedit exo6.sh
# !/bin/bash
For ((i=1 ;i<=5 ;i++))
Do echo $i done
gedit exo7.sh
# !/bin/bash
For i in `seq 1 5` Do echo $i done
3
6- La boucle while
gedit exo8.sh
# !/bin/bash
I=0
While[ « $i » -lt 5 ]
Do echo $i
((i++))
done
7- Lecture depuis l’entrée standard
Read –p prompt [name]
Read –p « entrer une valeur : » mavariable
Toto
Echo $mavariable
gedit exo9.sh
# !/bin/bash
Mavar= « rien »
While[ -n « $mavar » ] //(-n : si une chaine n’est pas vide »
Do read –p « à afficher »mavar
Echo « $mavar »
done
8- Lancement d’un script (./ ou $PATH)
Ajouter le dossier contenant le script à la variable PATH
Exemple :
Mkdir bin
Mv exo9.sh bin/
PATH=$PATH:/home/user/bin
Echo $PATH (tapper ex9.sh + entrée : exo9.sh devient comme une
commande)
exo9.sh
4
9-Exit
gedit exo10. Sh
# !/bin/bash
Case $1 in
Start)
Echo « on démarre » ;;
Stop)
Echo « on arrête » ;;
*) exit 1 ;;
Esac
Exit 0 ;
Chmod +x exo10.sh
./exo10.sh start (echo $ ?)
gedit exo11. Sh
# !/bin/bash
[ $1 –lt 10 ] || exit 1
Echo « plus petit que 10 »
Exit 0
Echo $ ?
gedit exo12. Sh
# !/bin/bash
nbr=0
while ((nbr!=53))
do
echo "Saisir 53 : "
read nbr
done
exit 0
./exo12.sh