Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ceci est une ancienne révision du document !
-
==
, !=
, <
, >
, >=
, ⇐
, Condition | Signification |
---|---|
$chaine1 = $chaine2 | est égal |
$chaîne1 == $chaîne2 | synonyme de = |
$chaine1 != $chaine2 | n'est pas égal à |
$chaine1 < $chaîne2 | avant (selon l'ordre alphabétique ASCII) |
$chaine1 > $chaîne2 | après (ASCII) |
$chaine >= $chaine | de longueur égale ou plus grande |
$chaine <= $chaine | de longueur égale ou plus petite |
Le shell bash utilise les commandes internes et composées[[ ]]
ou[ ]
(souvent utilisées avecif
) pour les comparaisons de chaînes de caractères.
C'est pourquoi on trouve souvent les options -z
et -a
du tableau ci-dessous, ajoutées au tableau ci-dessus :
Condition | Signification |
---|---|
-z $chaine | ne contient rien |
-n $chaine | contient quelque-chose |
[[ $a == "z*" ]] # vrai si $a est égal à z* [[ $a == z* ]] # vrai si $a commence avec un "z" (reconnaissance de modèles) [[ "$a" < "$b" ]] # vrai si $a se trouve avant $b dans le dictionnaire
-posix :
[ "$a" = "z*" ] # vrai si $a est égal à z* [ "$a" \< "$b" ] # vrai si $a se trouve avant $b dans le dictionnaire
test1= #puis [ -n "$test1" ] #puis echo $?
1
Donc la chaîne de la variable test1 est égale à zéro.
test2=abc #puis test3=ab #puis [ "$test2" = "$test3" ] #puis echo $?
1
Donc les deux chaînes de valeur contenue dans les variables test2 et test3 ne sont pas égales.
Tests avec les crochets :
#!/bin/bash var1="def" var2="def" if [ $var1 == $var2 ] ; then echo "1)test de correspondance chaîne de caractères sur valeur de variable: \$var1:"$var1" correspond(==) à \$var2:"$var2"." fi var3="hip" var4="hip" if test $var3 = $var4 ; then echo "2) test de correspondance chaîne de caractères sur valeur de variable: \$var3:"$var3" correspond(=) à \$var4:"$var4"." fi
./mon-script
1) test de correspondance chaîne de caractères sur valeur de variable: def:def correspond(= à $var2:def.
2) test de correspondance chaîne de caractères sur valeur de variable: hip:hip correspond( à $var4:hip.
Tests avec la commande test :
test4=tout-compris #puis test5=toutcompris #puis test $test4 = $test5 #puis echo $?
1
Donc les chaînes des deux valeurs sont différentes.
#!/bin/bash a="sloiuy" b="aktgjaùkjayaj" if [[ $a < $b ]] ; then echo " " fi echo "OK l'opérateur < fonctionne avec les chaînes de caractère" if [[ $a > $b ]] ; then echo "Les opérateurs < et > signifient avant et après selon l'ordre alphabétique (doubles crochets) " fi echo " " if [ $a > $b ] ; then echo "Les opérateurs < et > signifient avant et après selon l'ordre alphabétique (simples crochets) " fi
L'opérateur<
fonctionne avec les chaînes de caractère.
Les opérateurs<
et>
signifient avant et après selon l'ordre alphabétique (doubles crochets) .
Les opérateurs<
et>
signifient avant et après selon l'ordre alphabétique (simples crochets)
Il permet d'effectuer aussi des comparaisons sur les fichiers avec les commandes internes et composées[[ ]]
et[ ]
(associées à IF ou non).
Les commandes[[ ]]
et[ ]
suppléent la commande test.
if [[ option $FICHIER ]]
options de test | vérifie si : |
---|---|
-e $nomfichier | le fichier existe |
-d $nomfichier | le fichier est un répertoire |
-f $nomfichier | le fichier est un document |
-L $nomfichier | le fichier est un lien symbolique |
-r $nomfichier | le fichier est lisible |
-w $nomfichier | le fichier est modifiable |
-x $nomfichier | le fichier est exécutable |
$fichier1 -nt $fichier2 | fichier1 est plus récent que fichier2 (newerthan) |
$fichier1 -ot $fichier2 | fichier1 est plus vieux que fichier2 (olderthan) |
(Soit le fichier ordinaire “toto” dans le répertoire courant de l'utilisateur)
#!/bin/bash var1="~/toto" if [ -f "$var1" ] then echo "le fichier existe !" else echo "fichier inexistant: le fichier existe mais dans un script il faut le chemin absolu du fichier testé !" fi var1="home/hypathie/toto" if [ -f "$var1" ] then echo "le fichier existe !" else echo "fichier inexistant !" fi echo " " var2="home/hypathie/toto" if test -f "$var2" then echo "le fichier existe !" else echo "fichier inexistant !" fi
(Soit le fichier ordinaire “toto”)
test -f /home/hypathie/toto #puis echo $?
0
[ -f ~/toto ] #puis echo $?
0
Et voilà !