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 [15/02/2023 18:40] agp91 [Comparaison numérique avec ((] |
doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique [15/02/2023 21:39] ubub [Comparaison numérique avec [ et [[] |
||
---|---|---|---|
Ligne 247: | Ligne 247: | ||
echo -e "Avec n=\"$n\" ; ((0<=n)) renvoie le code retour $?\n" | echo -e "Avec n=\"$n\" ; ((0<=n)) renvoie le code retour $?\n" | ||
let n==0 | let n==0 | ||
- | echo -"Avec n=\"${n}\" ; let n==0 renvoie le code retour $?" | + | echo "Avec n=\"${n}\" ; let n==0 renvoie le code retour $?" |
</code> | </code> | ||
+ | <file config retour des commandes>===== | ||
+ | bash: ((: Du texte >= 0 : erreur de syntaxe dans l'expression (le symbole erroné est « texte >= 0 ») | ||
+ | (("Du texte" >= 0)) revoie le code de retour 1 | ||
+ | |||
+ | bash: let: 424>Du texte : erreur de syntaxe dans l'expression (le symbole erroné est « texte ») | ||
+ | let 424\>"Du texte" revoie le code de retour 1 | ||
+ | |||
+ | ===== | ||
+ | bash: ((: Du texte : erreur de syntaxe dans l'expression (le symbole erroné est « texte ») | ||
+ | Avec n="Du texte" ; ((0<=n)) renvoie le code retour 1 | ||
+ | |||
+ | bash: let: Du texte : erreur de syntaxe dans l'expression (le symbole erroné est « texte ») | ||
+ | -Avec n="Du texte" ; let n==0 renvoie le code retour 1 | ||
+ | </file> | ||
+ | |||
+ | <note> | ||
+ | Remarquons que les commandes **let** et **<nowiki>((</nowiki>** renvoie le code de retour 1 quand elles sont en erreur. Ce n'est pas la norme pour une commande interne de bash. Le code de retour devrait être 2. | ||
+ | </note> | ||
==== Exemple dans un script ==== | ==== Exemple dans un script ==== | ||
Ligne 399: | Ligne 417: | ||
</file> | </file> | ||
- | __Rappel :__ Lorsque le code de retour d'une commande interne renvoie 2, cela signifie un mauvais usage de cette commande. | + | __Rappel :__ Lorsque le code de retour d'une commande interne renvoie **2**, cela signifie un mauvais usage de cette commande. |
- | Elle est aussi la seule à accepter les chaînes vides qui sont alors évaluées à 0. | + | Elle est aussi la seule à accepter les chaînes vides qui sont alors évaluées à **0**. |
<code user> | <code user> | ||
Ligne 414: | Ligne 432: | ||
</file> | </file> | ||
- | Idem pour les chaînes de caractères sans espace (mots). Un mot est substitué par 0. | + | Idem pour les chaînes de caractères sans espace (mots). Un mot est substitué par **0**. |
<code user> | <code user> | ||
Ligne 429: | Ligne 447: | ||
==== Mauvais usages ==== | ==== Mauvais usages ==== | ||
- | Le caractère $ est obligatoire pour développer les arguments. Sans, ils sont interprétés comme des mots. | + | Le caractère **$** est obligatoire pour développer les arguments. Sans, ils sont interprétés comme des mots. |
Avec la commande **[** (ou **test**), les chaînes vides ou les mots sont à proscrire. | Avec la commande **[** (ou **test**), les chaînes vides ou les mots sont à proscrire. | ||
Ligne 486: | Ligne 504: | ||
</file> | </file> | ||
<note > | <note > | ||
- | Il est remarquable que le test ''<nowiki>[[ "Du texte" -ge 0 ]]</nowiki>'', ne renvoie pas le code de retour 2.\\ | + | Il est remarquable que le test ''<nowiki>[[ "Du texte" -ge 0 ]]</nowiki>'', ne renvoie pas le code de retour **2**.\\ |
Pourtant il s'agit bien d'un mauvais usage de la commande ''<nowiki>[[</nowiki>''. | Pourtant il s'agit bien d'un mauvais usage de la commande ''<nowiki>[[</nowiki>''. | ||
</note> | </note> | ||
Ligne 559: | Ligne 577: | ||
__Rappel :__ Le code retour 127, signifie que la commande n'a pas été trouvée. | __Rappel :__ Le code retour 127, signifie que la commande n'a pas été trouvée. | ||
- | Lorsqu'il n'y pas d'espaces entre les opérandes et l'opérateur, l'ensemble est considérer comme une chaîne de caractères\\ | + | Lorsqu'il n'y pas d'espaces entre les opérandes et l'opérateur, l'ensemble est considéré comme une chaîne de caractères\\ |
Puisque la chaîne est non vide, le test n'échoue pas. | Puisque la chaîne est non vide, le test n'échoue pas. | ||
<code user> | <code user> |