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 →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique [31/05/2014 16:12] Hypathie [Opérateurs de comparaison numérique] |
doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique [31/05/2014 16:57] Hypathie [Conclusion sur les opérateurs lexicographiques et les opérateurs de comparaison numérique] |
||
---|---|---|---|
Ligne 29: | Ligne 29: | ||
Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
- | =====Opérateurs de comparaison numérique ===== | + | =====1) opérateurs booléens de comparaison de nombres ===== |
Comme aux chapitre précédent on retrouve les opérateurs de comparaison booléens de comparaison (== , != , < , > , >=, <= , ! )\\ | Comme aux chapitre précédent on retrouve les opérateurs de comparaison booléens de comparaison (== , != , < , > , >=, <= , ! )\\ | ||
et des caractères de comparaisons relatifs aux commandes de tests. | et des caractères de comparaisons relatifs aux commandes de tests. | ||
- | |||
- | ====1) opérateurs booléens de comparaison de nombres==== | ||
^ Opérateur ^ Description ^ | ^ Opérateur ^ Description ^ | ||
Ligne 59: | Ligne 57: | ||
Attention on ne vérifie pas si deux nombres sont égaux avec les doubles parenthèses car cela n'est pas une comparaison ! | Attention on ne vérifie pas si deux nombres sont égaux avec les doubles parenthèses car cela n'est pas une comparaison ! | ||
</note> | </note> | ||
- | * exemple dans le terminal: | + | * **exemple dans le terminal:** |
<code=user> | <code=user> | ||
(( nombre1 = 12 )) | (( nombre1 = 12 )) | ||
Ligne 73: | Ligne 71: | ||
1 | 1 | ||
</code> | </code> | ||
- | * exemple avec le script "mon-script": | + | * **exemple avec le script "mon-script":** |
<code> | <code> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 91: | Ligne 89: | ||
23 n'est pas inférieur à 2 | 23 n'est pas inférieur à 2 | ||
</code> | </code> | ||
- | **le code de retour de l'exécution du script celui de l'exécution de la dernière commande du script ("echo "$a n'est pas inférieur à $b"" ")** | + | **le code de retour est celui de l'exécution de la dernière commande ("echo "$a n'est pas inférieur à $b" ")du script !** |
<code=user> | <code=user> | ||
echo $? | echo $? | ||
Ligne 122: | Ligne 120: | ||
if [ "$a" > "$b" ] ; then | if [ "$a" > "$b" ] ; then | ||
echo "De même, Attention ! incohérence "$e" > "$f" car avec test et crochets, | echo "De même, Attention ! incohérence "$e" > "$f" car avec test et crochets, | ||
- | il doit s'agir de chaînes de caractères." | + | il s'agit exclusivement de chaînes de caractères." |
fi | fi | ||
</code> | </code> | ||
Ligne 130: | Ligne 128: | ||
Attention ! incohérence 23 > 24 car avec test et crochets, | Attention ! incohérence 23 > 24 car avec test et crochets, | ||
- | il doit s'agir de chaînes de caractères. | + | il s'agit exclusivement de chaînes de caractères. |
De même, Attention ! incohérence 26 > 25 car avec test et crochets, | De même, Attention ! incohérence 26 > 25 car avec test et crochets, | ||
- | il doit s'agir de chaînes de caractères. | + | il s'agit exclusivement de chaînes de caractères. |
</code> | </code> | ||
</note> | </note> | ||
- | ====2) Opérateurs de comparaison de nombres avec la commande test ou les crochets==== | + | =====2) Opérateurs de comparaison de nombres avec la commande test ou les crochets===== |
(pour comparer des nombres comme avec les booléens, mais avec la commande test ou crochets) | (pour comparer des nombres comme avec les booléens, mais avec la commande test ou crochets) | ||
Ligne 148: | Ligne 146: | ||
|-lt |est plus petit que | | |-lt |est plus petit que | | ||
|-le |est plus petit ou égal à | | |-le |est plus petit ou égal à | | ||
+ | |||
- | **Syntaxe avec les crochets :** | + | ===Syntaxe avec les crochets :=== |
<code> | <code> | ||
- | if [ "$a" -eq "$b" ] | + | [ "$a" -eq "$b" ] |
- | if [ "$a" -ne "$b" ] | + | [ "$a" -ne "$b" ] |
- | if ["$a" -gt "$b" ] | + | ["$a" -gt "$b" ] |
- | if [ "$a" -ge "$b" ] | + | [ "$a" -ge "$b" ] |
- | if [ "$a" -lt "$b" ] | + | [ "$a" -lt "$b" ] |
- | if [ "$a" -le "$b" ] | + | [ "$a" -le "$b" ] |
</code> | </code> | ||
- | Exemple : | + | ===Syntaxe avec la commande test :=== |
+ | |||
+ | <code> | ||
+ | test "$a" -eq "$b" | ||
+ | test "$a" -ne "$b" | ||
+ | test "$a" -gt "$b" | ||
+ | test "$a" -ge "$b" | ||
+ | test "$a" -lt "$b" | ||
+ | test "$a" -le "$b" | ||
+ | </code> | ||
+ | |||
+ | ===Exemple avec crochets dans le terminal :=== | ||
+ | <code=user> | ||
+ | [ 25 -eq 20 ] | ||
+ | #puis | ||
+ | echo $? | ||
+ | </code> | ||
+ | retour : | ||
+ | <code> | ||
+ | 1 | ||
+ | </code> | ||
+ | **ou encore dans le même terminal :** | ||
+ | <code=user> | ||
+ | var1=17 | ||
+ | var2=18 | ||
+ | [ "$var1" -gt "$var2" ] | ||
+ | echo $? | ||
+ | </code> | ||
+ | === Exemple avec la commande test dans le terminal:=== | ||
+ | <code=user> | ||
+ | test 17 -gt 11 | ||
+ | #puis | ||
+ | echo $? | ||
+ | </code> | ||
+ | retour: | ||
+ | <code> | ||
+ | 0 | ||
+ | </code> | ||
+ | De même : | ||
+ | <code=user> | ||
+ | var2=11 | ||
+ | test "$var1" -gt "$var2" | ||
+ | echo $? | ||
+ | </code> | ||
+ | retour : | ||
+ | <code> | ||
+ | 0 | ||
+ | </code> | ||
+ | ===Exemple avec les crochets dans un script:=== | ||
<code> | <code> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 170: | Ligne 218: | ||
</code> | </code> | ||
- | **Syntaxe avec la commande test:** | + | ===Exemple avec la commande test dans un script:=== |
<code bash> | <code bash> | ||
Ligne 189: | Ligne 237: | ||
MAIS | MAIS | ||
- | 0 | + | |
<code> | <code> | ||
[ "LEbash" = "Labash" ]; echo $? #réponse 1 car l'expression est fausse. | [ "LEbash" = "Labash" ]; echo $? #réponse 1 car l'expression est fausse. | ||
Ligne 226: | Ligne 274: | ||
**1) qu'il y a deux mécanismes pour effectuer des tests, la paire de crochets et la commande test;**\\ | **1) qu'il y a deux mécanismes pour effectuer des tests, la paire de crochets et la commande test;**\\ | ||
- | **2) à chaque mécanisme sa syntaxe :**\\ | + | **2) qu'à chaque mécanisme sa syntaxe :**\\ |
<code> | <code> | ||
test expression ou bien [ expression ] | test expression ou bien [ expression ] | ||
Ligne 246: | Ligne 294: | ||
**5) qu'on utilise exclusivement les options -eq ; -ne ; -gt ; -ge ; -lt ; -le sur les nombres mais pas sur les chaînes de caractères** ;\\ | **5) qu'on utilise exclusivement les options -eq ; -ne ; -gt ; -ge ; -lt ; -le sur les nombres mais pas sur les chaînes de caractères** ;\\ | ||
- | **6) qu'on ne confondra pas avec les options -e ; -d ; -f ; -L ; -r ; -w ; -x ; $fichier1 -nt $fichier2 ; $fichier1 -ot $fichier2 qu'on utilise exclusivement pour tester les fichiers.** | + | **6) qu'on ne confondra pas avec les précédentes, les options qu'on utilise exclusivement pour tester les fichiers : -e ; -d ; -f ; -L ; -r ; -w ; -x ; $fichier1 -nt $fichier2 ; $fichier1 -ot $fichier2 ** |