logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:52]
ubub [Comparaison numérique avec ((]
doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique [16/02/2023 09:25]
agp91 [Comparaison numérique avec ((]
Ligne 43: Ligne 43:
 <​code>​ <​code>​
 let <​expr1><​OP><​expr2>​ let <​expr1><​OP><​expr2>​
 +let "<​expr1>​ <OP> <​expr2>"​
 (( <​expr1>​ <OP> <​expr2>​ )) (( <​expr1>​ <OP> <​expr2>​ ))
  
 <​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). 
 </​code>​ </​code>​
  
-__Remarque ​:__ Les commandes **let** et **<​nowiki>​((</​nowiki>​** sont pratiquement ​équivalentes ​(voir les différences plus bas Mauvais usages).+__Remarques ​:__ Les commandes **let** et **<​nowiki>​((</​nowiki>​** sont équivalentes.
  
-|  Opérateurs de comparaison numérique ​de la commande ​<​nowiki>​((</​nowiki> ​ ||+|  Opérateurs de comparaison numérique ​des commandes let et <​nowiki>​((</​nowiki> ​ ||
 ^ Opérateurs ^ Description ^ ^ Opérateurs ^ Description ^
 | ''​ == ''​ | Comparaison d'une égalité ​             | | ''​ == ''​ | Comparaison d'une égalité ​             |
Ligne 60: Ligne 60:
 | ''​ < ''​ | Comparaison de plus petit que         | | ''​ < ''​ | Comparaison de plus petit que         |
 | ''<​nowiki><​=</​nowiki>​ ''​ | Comparaison de plus petit ou égal que | | ''<​nowiki><​=</​nowiki>​ ''​ | Comparaison de plus petit ou égal que |
 +
 +
 +La commande **let** ne supporte qu'un seul argument.\\ ​
 +Si l'​expression arithmétique à évaluer comporte des espaces, l'​expression doit être protégée par des guillemets simples ou doubles.\\ ​
 +Si l'​expression n'est pas protégée, les opérateurs commençant par **<** ou **>** doivent être protégés\\ ​
 +(Voir plus bas : [[https://​debian-facile.org/​doc:​programmation:​shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique#​mauvais-usages|Mauvais usages]].)
  
 ==== Exemples dans le terminal ==== ==== Exemples dans le terminal ====
Ligne 79: Ligne 85:
 (( $nombre1 > $nombre2 )) # Est-ce-que nombre1 (12) est strictement supérieur au nombre2 (13). (( $nombre1 > $nombre2 )) # Est-ce-que nombre1 (12) est strictement supérieur au nombre2 (13).
 echo $? # Affiche le code de retour. echo $? # Affiche le code de retour.
-let $nombre1!=$nombre2 #Est-ce-que nombre1 (12) est différent du nombre2 (13)+let "$nombre1 != $nombre2" #Est-ce-que nombre1 (12) est différent du nombre2 (13)
 echo $? # Affiche le code de retour. echo $? # Affiche le code de retour.
  
Ligne 106: Ligne 112:
 Comme nous l'​avons vu au dessus, les paramètres n'ont pas besoin du caractère **$** pour être développés.\\ ​ 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éveloppement renverra ​**0**.+Si ce paramètre n'​existe pas, le mot sera substitué par **0**.
  
 <code user> <code user>
 (("​mot"​ == 0)) (("​mot"​ == 0))
 echo '​(("​mot"​ == 0)) revoie le code de retour'​ $? echo '​(("​mot"​ == 0)) revoie le code de retour'​ $?
-let mot\<=0 +let "mot <= 0" 
-echo 'let "mot"\<=0 revoie le code de retour'​ $?+echo 'let "mot <= 0" ​revoie le code de retour'​ $?
  
 n="​mot"​ n="​mot"​
Ligne 124: Ligne 130:
 <file config retour des commandes>​ <file config retour des commandes>​
 (("​mot"​ == 0)) revoie le code de retour 0 (("​mot"​ == 0)) revoie le code de retour 0
-let "mot"\<=0 revoie le code de retour 0+let "mot <= 0" ​revoie le code de retour 0
 Avec n="​mot"​ ; ((n!=0)) renvoie le code de retour 1 Avec n="​mot"​ ; ((n!=0)) renvoie le code de retour 1
 Avec n="​mot"​ ; let n==0 renvoie le code de retour 0 Avec n="​mot"​ ; let n==0 renvoie le code de retour 0
 </​file>​ </​file>​
  
 +Si un paramètre existe mais que sa valeur est vide, son développement retournera 0.
 +<code user>
 +n=
 +((n==0)) ; echo $?
 +let 'n != 0' ; echo $?
 +
 +unset n
 +</​code>​
 +<file config retour des commandes>​
 +0
 +1
 +</​file>​
 Avec la commande **<​nowiki>​((</​nowiki>​**,​ les espaces ne sont pas obligatoires. Avec la commande **<​nowiki>​((</​nowiki>​**,​ les espaces ne sont pas obligatoires.
 <code user> <code user>
Ligne 148: Ligne 166:
 ==== Mauvais usages ==== ==== Mauvais usages ====
  
-La commande **let** ​ne supporte ​pas les espaces entre les opérandes et l'​opérateur.+Avec la commande **let**, si l'​expression à évaluer n'​est ​pas protégée,​\\  
 +Les espaces entre les opérandes et l'​opérateur ​ne sont pas supportés.
  
 <code user> <code user>
Ligne 161: Ligne 180:
 </​file>​ </​file>​
  
-Avec la commande **let**, les opérateurs **<**, **<​nowiki><​=</​nowiki>​**,​ **>** et **>=** doivent être protégés.\\ 
  
 +Avec la commande **let**, si l'​expression à évaluer est protégé par des guillemets simples,​\\ ​
 +Les paramètres sont développés uniquement s'ils ne disposent pas du caractère **$**.\\ ​
 +S'il est fourni, une erreur est renvoyée.
 +
 +<code user>
 +n=42
 +let '​n==42'​ ;​ echo $?
 +let '$n > 42' ; echo $?
 +</​code>​
 +<file config retour des commandes>​
 +0
 +bash: let: $n == 42 : erreur de syntaxe : opérande attendu (le symbole erroné est « $n == 42 »)
 +1
 +</​file>​
 +
 +Avec la commande **let**, si l'​expression à évaluer n'est pas protégée, les opérateurs **<**, **<​nowiki><​=</​nowiki>​**,​ **>** et **>=** doivent être protégés.\\
 Les trois types de protection (**\**, entre guillemets simples **<​nowiki>''</​nowiki>​** et entre guillemets doubles **""​** 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.\\ ​
Ligne 236: Ligne 270:
 Sans guillemets, il est nécessaire de protéger le caractère de protection (**\\n**). Sans guillemets, il est nécessaire de protéger le caractère de protection (**\\n**).
  
-<​code>​ +<​code ​user>
-echo =====+
 (("Du texte" >= 0)) (("Du texte" >= 0))
-echo -e '​(("​Du texte" >= 0)) renvoie 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" renvoie le code de retour'​ $?\\n +echo -e 'let 424\>"​Du texte" renvoie le code de retour'​ $?\\n 
-echo =====+
 n="Du texte" n="Du texte"
 ((0<=n)) ((0<=n))
-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 $?" 
 + 
 +unset n
 </​code>​ </​code>​
-<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)) renvoie 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" renvoie le code de retour 1+let 424\>"​Du texte" renvoie le code de retour 1
  
-===== 
 bash: ((: Du texte : erreur de syntaxe dans l'​expression (le symbole erroné est « texte ») 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+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 ») 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+Avec n="Du texte" ; let n==0 renvoie le code retour 1
 </​file>​ </​file>​
  
doc/programmation/shells/page-man-bash-iii-les-operateurs-de-comparaison-numerique.txt · Dernière modification: 30/09/2023 23:06 (modification externe)

Pied de page des forums

Propulsé par FluxBB