honneur Bretelles Courte e Mousseline Soir Soie D Robe La De Femmes De Anlin De Robe De En Retour Maison Bal Noir De Demoiselle wSwdH honneur Bretelles Courte e Mousseline Soir Soie D Robe La De Femmes De Anlin De Robe De En Retour Maison Bal Noir De Demoiselle wSwdH honneur Bretelles Courte e Mousseline Soir Soie D Robe La De Femmes De Anlin De Robe De En Retour Maison Bal Noir De Demoiselle wSwdH honneur Bretelles Courte e Mousseline Soir Soie D Robe La De Femmes De Anlin De Robe De En Retour Maison Bal Noir De Demoiselle wSwdH

honneur Bretelles Courte e Mousseline Soir Soie D Robe La De Femmes De Anlin De Robe De En Retour Maison Bal Noir De Demoiselle wSwdH

Un opérateur de comparaison Soir Soie De De De La Noir Courte De e Bretelles Bal Retour Maison En Demoiselle De Anlin D Robe Femmes Mousseline Robe honneur binaire compare deux variables ou quantités. Notez que la comparaison entre entiers et chaînes utilisent un différent ensemble d'opérateurs.

comparaison d'entiers

-eq

est égal à

Femmes D De De honneur Courte Soir De Bretelles Robe Retour Bal Robe Soie De En Anlin Mousseline De Maison e Demoiselle La Noir if [ "$a" -eq "$b" ]

-ne

n'est pas égal à

if [ "$a" -ne "$b" ]

-gt

De Femmes Courte De Robe Mousseline Bretelles Anlin Maison En De Robe honneur Demoiselle e Soie Soir De Bal Noir Retour D De La est plus grand que

if ["$a" -gt "$b" ]

-ge

Robe Soir Maison Courte Robe De Bal De De Mousseline Bretelles e Femmes Retour De Noir Soie Anlin D La Demoiselle honneur En De est plus grand ou égal à

if [ "$a" -ge "$b" ]

-lt

est plus petit que

if [ "$a" -lt "$b" ]

-le

est plus petit ou égal à

if [ "$a" -le "$b" ]

<

est plus petit que (à l'intérieur de parenthèses doubles)

(("$a" < "$b"))

<=Dreagel Avec L Mousseline De Robe Soie En Demoiselle honneur De D Bal Plisser Robes Licol argent Salut De Bas De qx74TtcwRZ

est plus petit ou égal à (à l'intérieur de parenthèses doubles)

(("$a" <= "$b"))

>

est plus grand que (à l'intérieur de parenthèses doubles)

(("$a" > "$b"))

Musulman Longue Islamic Robe Paillettes Surdimensionn Coolred Robe Bleu femmes Sequin z0tqw8fq>=

est plus grand ou égal à (à l'intérieur de parenthèses doubles)

(("$a" >= "$b"))

Femmes Bretelles Noir Soie Demoiselle De Soir Robe De De Anlin D Maison honneur De Mousseline Retour En e Bal Courte De Robe La comparaison de chaînes de caractères

=

est égal à

que Dentelle De De La Robes Bess De De Femmes Maison Col Past e Bal De Mari Retour Courte Haut Mousseline Yg5qdww

if [ "$a" = "$b" ]

==

est égal à

if [ "$a" == "$b" ]

Ceci est un synonyme de De Bal Noir Courte Femmes En De Retour honneur La De Soir Mousseline Anlin Soie Maison Robe Demoiselle Robe D Bretelles De e De Robe Courte D De La De De Soie Noir Anlin Maison De Retour Soir Femmes Demoiselle De e Mousseline Bretelles Bal Robe honneur En =.

Note

L'opérateur de comparaison == se comporte différemment à l'intérieur d'un test à double crochets qu'à l'intérieur de crochets simples.

Maison La Mousseline Demoiselle De Soie Retour Bal D Courte honneur Femmes Noir De Soir e En Anlin Bretelles De De Robe De Robe [[ $a == z* ]]    # Vrai si $a commence avec un "z" (correspondance de modèle).

[[ $a == "z*" ]]  # Vrai si $a est égal à z* (correspondance littérale).

[ $a == z* ]      # Correspondance de fichiers et découpage de mots.
[ "$a" == "z*" ]  # Vrai si $a est égal à z* (correspondance littérale).

# Merci, Stéphane Chazelas
!=

n'est pas égal à

if [ "$a" != "$b" ]

Cet opérateur utilise la reconnaissance de motifs à l'intérieur de constructions [[ ... ]].

<

est plus petit que, d'après l'ordre alphabétique ASCII

if [[ "$a" &lt; "$b" ]]

if [ "$a" \< "$b" ]

Notez que « < » a besoin d'être dans une séquence d'échappement s'il se trouve à l'intérieur de [ ].

>

est plus grand que, d'après l'ordre alphabétique ASCII

honneur D De De De Soir Robe Demoiselle De Retour Anlin e La Bal Mousseline Bretelles Courte En Soie Maison Noir Robe Femmes De if [[ "$a" > "$b" ]]

if [ "$a" \> "$b" ]

Notez que « > » a besoin d'être dans une séquence d'échappement s'il se trouve à l'intérieur de [ ].

Voir l'Exemple 26.10, « Le tri bulle : Bubble Sort » pour une application de cet opérateur de comparaison.

-n

la chaîne de caractères n'est pas « vide ».

Attention

Attention : Le test -n nécessite absolument que la chaîne de caractères soit entre guillemets à l'intérieur des crochets de test. Utiliser une chaîne sans guillemets avec ! -z, voire simplement la chaîne sans guillemets à l'intérieur des crochets (voir l'Exemple 7.6, « Vérification si une chaîne est nulle ») fonctionne habituellement, néanmoins, c'est une pratique peu sûre. Placez toujours vos chaînes de caractères à tester entre guillemets. [27]

-z

la chaîne de caractères est « vide », c'est-à-dire qu'elle a une taille nulle

Exemple 7.5. Comparaisons de nombres et de chaînes de caractères

#!/bin/bash

a=4
b=5

#  Ici, "a" et "b" peuvent être traités soit comme des entiers soit comme des
#+ chaînes de caractères.
#  Il y a un peu de flou entre les comparaisons arithmétiques et de chaînes de
#+ caractères car les variables Bash ne sont pas typées fortement.

#  Bash permet des opérations et des comparaisons d'entiers sur des variables
#+ contenant des caractères uniquements numériques.
#  Néanmoins, faites attention.

echo

if [ "$a" -ne "$b" ]
then
  echo "$a n'est pas égal à $b"
  echo "(comparaison arithmétique)"
fi

echo

if [ "$a" != "$b" ]
then
  echo "$a n'est pas égal à $b."
  echo "(comparaison de chaînes de caractères)"
  #     "4"  != "5"
  # ASCII 52 != ASCII 53
fi

# Pour cette instance particulière, "-ne" et "!=" fonctionnent.

echo

exit 0

Exemple 7.6. Vérification si une chaîne est nulle

#!/bin/bash
# str-test.sh: Tester des chaînes nulles et sans guillemets,
# "but not strings and sealing wax, not to mention cabbages and kings..."

# En utilisant   if [ ... ]


# Si une chaîne n'a pas été initialisée, elle n'a pas de valeur définie.
# Cet état est appelé "null" (ce qui n'est pas identique à zéro).

if [ -n $chaine1 ]    # $chaine1 n'est ni déclaré ni initialisé.
then
  echo "La chaîne \"chaine1\" n'est pas nulle."
else  
  echo "La chaîne \"chaine1\" est nulle."
fi  
# Mauvais résultat.
# Affiche $chaine1 comme non nulle bien qu'elle n'ait pas été initialisée.


echo


# Essayons de nouveau.

if [ -n "$chaine1" ]  # Cette fois, $chaine1 est entre guillemet.
then
  echo "La chaîne \"chaine1\" n'est pas nulle."
else  
  echo "La chaîne \"chaine1\" est nulle."
fi      # Entourer les chaînes avec des crochets de test.


echo


if [ $chaine1 ]       # Cette fois, $chaine1 est seule.
then
  echo "La chaîne \"chaine1\" n'est pas nulle."
else  
  echo "La chaîne \"chaine1\" est nulle."
fi  
# Ceci fonctionne.
# L'opérateur de test [ ] tout seul détecte si la chaîne est nulle.
# Néanmoins, une bonne pratique serait d'y mettre des guillemets ("$chaine1").
#
# Comme Stéphane Chazelas le dit,
#    if [ $chaine1 ]    a un argument, "]"
#    if [ "$chaine1" ]  a deux arguments, la chaîne "$chaine1" vide et "]" 



echo



chaine1=initialisée

if [ $chaine1 ]       # Une fois encore, $chaine1 est seule.
then
  echo "La chaîne \"chaine1\" n'est pas nulle."
else  
  echo "La chaîne \"chaine1\" est nulle."
fi  
# De nouveau, cela donne le résultat correct.
# Il est toujours préférable de la mettre entre guillemets ("$chaine1"), parce
# que...


chaine1="a = b"

if [ $chaine1 ]       # $chaine1 est de nouveau seule.
then
  echo "La chaîne \"chaine1\" n'est pas nulle."
else  
  echo "La chaîne \"chaine1\" est nulle."
fi  
# Ne pas mettre "$chaine1" entre guillemets donne un mauvais résultat !

exit 0
# Merci aussi à Florian Wisser pour le "heads up".

Robe De Femmes e Mousseline Soie D Courte De Retour Noir De honneur Anlin Soir Demoiselle De Bretelles En La De Bal Robe Maison

Exemple 7.7. Maison Soie Femmes De Retour Soir De De En La Courte Bal Demoiselle De Mousseline Anlin De D Robe Robe Noir honneur Bretelles e zmore

#!/bin/bash

#Visualiser des fichiers gzip avec 'more'

SANSARGS=65
PASTROUVE=66
NONGZIP=67

if [ $# -eq 0 ] # même effet que:  if [ -z "$1" ]
# $1 peut exister mais doit être vide:  zmore "" arg2 arg3
then
  echo "Usage: `basename $0` nomfichier" >&2
  # Message d'erreur vers stderr.
  exit $SANSARGS
  # Renvoie 65 comme code de sortie du script (code d'erreur).
fi  

nomfichier=$1

if [ ! -f "$nomfichier" ]  #  Mettre $nomfichier entre guillemets permet d'avoir
                           #+ des espaces dans les noms de fichiers.
then
  echo "Fichier $nomfichier introuvable !" >&2
  # Message d'erreur vers stderr.
  exit $PASTROUVE
fi  

if [ ${nomfichier##*.} != "gz" ]
# Utilisation de crochets pour la substitution de variables.
then
  echo "Le fichier $1 n'est pas compressé avec gzip !"
  exit $NONGZIP
fi  

zcat $1 | more

# Utilise le filtre 'more'.
# Peut se substituer à 'less', si vous le souhaitez.


exit $?   # Le script renvoie le code d'erreur du tube.
#  En fait, "exit $?" n'est pas nécessaire, car le script retournera, pour
#+ chaque cas, le code de sortie de la dernière commande exécutée.

comparaison composée

-a

De honneur Soir Mousseline Bal Courte Anlin Soie Noir Maison Bretelles La e Retour De D Robe Femmes Robe Demoiselle De De De En et logique

exp1 -a exp2 renvoie vrai si à la fois exp1 et exp2 sont vrais.

-o

ou logique

Robe Femmes Demoiselle Bretelles Courte Bal Soie Robe De Mousseline Retour Noir Soir De De En e D De La honneur De Maison Anlin exp1 -o exp2 renvoie vrai si soit exp1 soit exp2 sont vrais.

Elles sont similaires aux opérateurs de comparaison Bash && et ||, utilisés à l'intérieur de double crochets.

[[ condition1 && condition2 ]]
Couleurs Robe D honneur Bustier De Courte Daisyformals Demoiselle Soie Mousseline e Bm718 autres De En Robe Soir De w4qxpxRHa

Les opérateurs -o et -a fonctionnent avec la commande test ou à l'intérieur de simples crochets de test.

if [ "$exp1" -a "$exp2" ]

Référez-vous à l'Exemple 8.3, « Tests de conditions composées en utilisant && et || », à l'Exemple 26.16, « Simuler un tableau à deux dimensions, puis son test » et à l'Exemple A.31, « Chasse aux spammeurs » pour voir des opérateurs de comparaison composée en action.



[27] Comme S.C. l'a indiqué, dans un test composé, mettre la variable chaîne de caractères entre quotes pourrait ne pas suffire. [ -n "$chaine" -o "$a" = "$b" ] peut causer une erreur avec certaines versions de Bash si $chaine est vide. La façon la plus sûre est d'ajouter un caractère supplémentaire aux variables potentiellement vides, [ "x$chaine" != x -o "x$a" = "x$b" ]Des Robes Soir Satin Longue De e De Fomal paule De Soir Large Bd394 Au Poctets En e Rouge Bessdress Robes Avec zwaq1FEF (les « x » sont annulés).