Les scripts
Linux
Linux 11 CPI
CPI 2018/2019
2018/2019
-1-
Les scripts
-2-
Les scripts
La commande test ou [ ] permet d’effectuer des
tests sur :
● les fichiers et les répertoires ;
● les chaînes de caractères ;
● les valeurs numériques ;
Syntaxe: test option paramètre
ou [ option paramètre ]
-3-
Les scripts
-4-
Les scripts
Exemple 01 (-f, -d)
-f : vrai si c’est un fichier
-d : vrai si c’est un répertoire
user1@PC:~$ test -f .profile && echo "c'est un fichier"
c'est un fichier
user1@PC:~$ [ -f .profile] && echo "c'est un fichier"
bash: [: « ] » manquant
user1@PC:~$ [ -f .profile ] && echo "c'est un fichier"
c'est un fichier
user1@PC:~$ test -d Bureau/&& echo "c'est un répertoire"
c'est un répertoire
user1@PC:~$ [ -d Bureau/ ] && echo "c'est un répertoire"
c'est un répertoire
-5-
Les scripts
Exemple 02 (-e, -s)
-e : vrai si le fichier ou répertoire existe
-s : vrai si le fichier ou le répertoire n’est pas vide
user1@PC:~$ [ -e /etc/ ] && echo "il existe"
il existe
user1@PC:~$ [ -e /etc/profile ] && echo "il existe"
il existe
user1@PC:~$ [ -s /etc/ ] && echo "il n'est pas vide"
il n'est pas vide
user1@PC:~$ [ -s /etc/profile ] && echo "il n'est pas vide"
il n'est pas vide
-6-
Les scripts
Exemple 03 (-r, -w, -x, -u, -g)
-r; -w; -x : pour tester lecture; écriture; exécution
-u; g: pour tester les bits SUID ; GUID
user1@PC:~$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2597 30 21:27 /etc/passwd
user1@PC:~$ test -w /etc/passwd || echo "$USER n'a
pas les droits w"
user1 n'a pas les droits w
user1@PC:~$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 59640 25 2018 /usr/bin/passwd
user1@PC:~$ test -u /usr/bin/passwd && echo "le bit
SUID est positionné"
le bit SUID est positionné
-7-
Les scripts
-8-
Les scripts
Exemple 01 (=,!=)
= : vrai si les deux chaînes sont identiques
!= : vrai si les deux chaînes sont différentes
user1@PC:~$ [ $$=`pgrep bash -u $USER` ] && echo "ils
sont identiques"
ils sont identiques
user1@PC:~$ [ $$=$! ] && echo "ils sont différents"
ils sont différents
-9-
Les scripts
Exemple 02 (-z,-n)
-z : vrai si chaîne est vide
-n : vrai si la chaîne n’est pas vide
user1@PC:~$ test -z "" && echo "chaîne est vide"
chaîne est vide
user1@PC:~$ test -n "aaa" && echo "chaîne n'est pas
vide"
chaîne n'est pas vide
user1@PC:~$ test "aaa" && echo "chaîne n'est pas vide"
chaîne n'est pas vide
- 10 -
Les scripts
- 11 -
Les scripts
Exemple 01 (-eq, -ne ; -gt, -ge ; -lt, -le)
-eq : signifier = -ne : signifier ≠
-gt : signifier > -ge : signifier ≥
-lt : signifier < -le : signifier ≤
user1@PC:~$ [ 1 -eq 1 ] && echo "test ="
test =
user1@PC:~$ [ 2 -ne 1 ] && echo "test !="
test !=
user1@PC:~$ [ 2 -gt 1 ] && echo "test >"
test >
user1@PC:~$ [ 1 -ge 1 ] && echo "test >="
test >=
user1@PC:~$ [ 1 -lt 2 ] && echo "test <"
test <
user1@PC:~$ [ 2 -le 2 ] && echo "test <="
test <=
- 12 -
Les scripts
- 13 -
Les scripts
Exemple 01 (-a, -o; !)
-a : signifier AND, ET logique
-o : signifier OR, OU logique
! : signifier NOT, NON logique
user1@PC:~$ [ -r /etc/passwd -a -w Bureau/ ] && echo
"teste combinés"
teste combinés
user1@PC:~$ [ -r /etc/passwd -o -w Bureau/ ] && echo
"teste combinés"
teste combinés
user1@PC:~$ [ ! -x /etc/passwd ] && echo "teste
combinés"
teste combinés
- 14 -
Les scripts
- 15 -
Les scripts
La structure if
Syntaxe :
if condition
then
commande
...
[ else
commande
... ]
fi
- 16 -
Les scripts
Exemple (if ... then .…)
user1@PC:~$ cat fich
linux est top
user1@PC:~$ cat exemple_if_then
#!/bin/bash
if [ -f $1 ]
then
echo "Le contenu du fichier $1 est:" `cat $1`
else
echo "Erreur: $1"
fi
user1@PC:~$ ./exemple_if_then fich
Le contenu du fichier fich est: linux est top
- 17 -
Les scripts
La structure case
Syntaxe :
case variable in
pattern1) commande
... ;;
[ pattern2) commande
... ;; ]
esac
- 18 -
Les scripts
Exemple (case... )
user1@PC:~$ cat exemple_case
#!/bin/bash
case $0 in
.*) echo "nom commance par .";;
e*) echo "nom commance par e";;
esac
user1@PC:~$ ./exemple_case
nom commance par .
- 19 -
Les scripts
La structure for
Syntaxe :
for variable in liste
do
commande
...
done
- 20 -
Les scripts
Exemple (for)
user1@PC:~$ ls Bureau/
fich1 fich2 mon_Mkdir
user1@PC:~$ cat exemple_for
#!/bin/bash
for obj in Bureau/*
do
mv $obj $1
done
user1@PC:~$ ./exemple_for Documents/
user1@PC:~$ ls Bureau/
user1@PC:~$ ls Documents/
fich1 fich2 mon_Mkdir
- 21 -
Les scripts
Linux
Linux 11 CPI
CPI 2018/2019
2018/2019
- 22 -