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 Les deux révisions suivantes | ||
doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique [15/02/2023 21:39] ubub [Comparaison numérique avec [ et [[] |
doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique [15/02/2023 21:52] ubub [Comparaison numérique avec ((] |
||
---|---|---|---|
Ligne 47: | Ligne 47: | ||
<expr1> et <expr2> sont sujets au développement des paramètres et à l’évaluation arithmétique. | <expr1> et <expr2> sont sujets au développement des paramètres et à l’évaluation arithmétique. | ||
Avec <OP> l'un des opérateurs donnés dans le tableau suivant. | Avec <OP> l'un des opérateurs donnés dans le tableau suivant. | ||
- | Avec la commande let, les opérateurs commençant par < ou > doivent être protégés (voir plus bas : Mauvais usages). | + | Avec la commande **let**, les opérateurs commençant par **<** ou **>** doivent être protégés (voir plus bas : Mauvais usages). |
</code> | </code> | ||
Ligne 104: | Ligne 104: | ||
</file> | </file> | ||
- | Comme nous l'avons vu au dessus, les paramètre n'ont pas besoin du caractère **$** pour être développé.\\ | + | Comme nous l'avons vu au dessus, les paramètres n'ont pas besoin du caractère **$** pour être développés.\\ |
Un simple mot sera alors interprété comme un paramètre.\\ | Un simple mot sera alors interprété comme un paramètre.\\ | ||
- | Si ce paramètre n'existe pas, son développent retournera 0. | + | Si ce paramètre n'existe pas, son développement renverra **0**. |
<code user> | <code user> | ||
Ligne 163: | Ligne 163: | ||
Avec la commande **let**, les opérateurs **<**, **<nowiki><=</nowiki>**, **>** et **>=** doivent être protégés.\\ | Avec la commande **let**, les opérateurs **<**, **<nowiki><=</nowiki>**, **>** et **>=** doivent être protégés.\\ | ||
- | Les trois types de protection (**\**, entre guillemets simples **<nowiki>''</nowiki>** et entre guillemets double **""** fonctionnent.\\ | + | Les trois types de protection (**\**, entre guillemets simples **<nowiki>''</nowiki>** et entre guillemets doubles **""** fonctionnent.\\ |
S'ils ne sont pas protégés, les opérateurs **<** et **>** sont des opérateurs de redirection.\\ | S'ils ne sont pas protégés, les opérateurs **<** et **>** sont des opérateurs de redirection.\\ | ||
Démonstration : | Démonstration : | ||
__Rappels :__\\ | __Rappels :__\\ | ||
- | La commande **printf "\n"**, retourne un saut de ligne.\\ | + | La commande **printf "\n"**, renvoit un saut de ligne.\\ |
La commande **echo -n**, n'ajoute pas de saut ligne à la fin de son retour. | La commande **echo -n**, n'ajoute pas de saut ligne à la fin de son retour. | ||
Ligne 209: | Ligne 209: | ||
Les opérateurs **<** et **<nowiki><=</nowiki>** ont recherché les fichiers **423** et **=424**, sans les trouver. | Les opérateurs **<** et **<nowiki><=</nowiki>** ont recherché les fichiers **423** et **=424**, sans les trouver. | ||
- | Les opérateur de comparaison sont des opérateurs binaires, ils attendent donc 2 arguments (ou opérandes).\\ | + | Les opérateurs de comparaison sont des opérateurs binaires, ils attendent donc 2 arguments (ou opérandes).\\ |
Les commande **<nowiki>((</nowiki>** et **let** retournent une erreur s'il manque un opérande. | Les commande **<nowiki>((</nowiki>** et **let** retournent une erreur s'il manque un opérande. | ||
<code> | <code> | ||
Ligne 234: | Ligne 234: | ||
__Rappel :__ L'option **-e** de la commande **echo** permet de développer les caractères protégés, (ici **\n** qui se développe en saut de ligne).\\ | __Rappel :__ L'option **-e** de la commande **echo** permet de développer les caractères protégés, (ici **\n** qui se développe en saut de ligne).\\ | ||
Le développement des caractères protégés se réalisent entre guillemets doubles.\\ | Le développement des caractères protégés se réalisent entre guillemets doubles.\\ | ||
- | Sans guillemets, il est nécessaire de protégé le caractère de protection (**\\n**). | + | Sans guillemets, il est nécessaire de protéger le caractère de protection (**\\n**). |
<code> | <code> | ||
echo ===== | echo ===== | ||
(("Du texte" >= 0)) | (("Du texte" >= 0)) | ||
- | echo -e '(("Du texte" >= 0)) revoie le code de retour' $?\\n | + | echo -e '(("Du texte" >= 0)) renvoie le code de retour' $?\\n |
let 424\>"Du texte" | let 424\>"Du texte" | ||
- | echo -e 'let 424\>"Du texte" revoie le code de retour' $?\\n | + | echo -e 'let 424\>"Du texte" renvoie le code de retour' $?\\n |
echo ===== | echo ===== | ||
n="Du texte" | n="Du texte" | ||
Ligne 251: | Ligne 251: | ||
<file config retour des commandes>===== | <file config retour des commandes>===== | ||
bash: ((: Du texte >= 0 : erreur de syntaxe dans l'expression (le symbole erroné est « texte >= 0 ») | 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 | + | (("Du texte" >= 0)) renvoie le code de retour 1 |
bash: let: 424>Du texte : erreur de syntaxe dans l'expression (le symbole erroné est « texte ») | 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 | + | let 424\>"Du texte" renvoie le code de retour 1 |
===== | ===== | ||
Ligne 265: | Ligne 265: | ||
<note> | <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. | + | Remarquons que les commandes **let** et **<nowiki>((</nowiki>** renvoient 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> | </note> | ||
Ligne 296: | Ligne 296: | ||
</file> | </file> | ||
- | __Remarque :__ L’exécution du script retournera toujours 0 (true), car le code de retour renvoyé est celui de la dernière commande exécutée, qui est echo.\\ | + | __Remarque :__ L’exécution du script renverra toujours **0** (true), car le code de retour renvoyé est celui de la dernière commande exécutée, qui est **echo**.\\ |
(voir [[doc:programmation:shells:script-bash-etat-de-sorie-et-les-tests#utiliser-la-commande-exit|utilisation de la commande exit]]). | (voir [[doc:programmation:shells:script-bash-etat-de-sorie-et-les-tests#utiliser-la-commande-exit|utilisation de la commande exit]]). | ||
Ligne 303: | Ligne 303: | ||
Nous créons ici une fonction (test_si_négatif) qui teste si une expression numérique ou arithmétique est négative. | Nous créons ici une fonction (test_si_négatif) qui teste si une expression numérique ou arithmétique est négative. | ||
- | __Rappel :__ La commande **return** est identique à la commande **exit** (return s'utilise dans une fonction, exit dans un script). | + | __Rappel :__ La commande **return** est identique à la commande **exit** (**return** s'utilise dans une fonction, **exit** dans un script). |
<code user> | <code user> |