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
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques [26/02/2023 01:35]
agp91 [Les opérateurs bit-à-bit]
doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques [26/02/2023 11:15]
agp91 [Les opérateurs d'affectation]
Ligne 48: Ligne 48:
 Elle est délaissée depuis la version 2.0 de bash au profit de **<​nowiki>​((...))</​nowiki>​**.\\ ​ Elle est délaissée depuis la version 2.0 de bash au profit de **<​nowiki>​((...))</​nowiki>​**.\\ ​
 \\  \\ 
-Pour des raisons de rétrocompatibilités,​ elle est toujours active dans nos bash modernes.\\ ​ 
-Mais n'est plus documentée dans la page du manuel.\\ ​ 
 \\  \\ 
-Viendra ​un jour où, **$[...]** ne sera plus.+<file config Extrait de la page du manuel de bash> 
 +L'​ancien format $[expression] est obsolète et sera supprimé dans les prochaines versions de bash. 
 +</​file>​ 
 +\\   
 +Pour des raisons de rétrocompatibilités,​ elle est toujours active dans nos bash modernes.\\  
 +Mais viendra ​un jour où, **$[...]** ne sera plus.
 </​note>​ </​note>​
  
Ligne 118: Ligne 121:
  
 |  Liste des opérateurs d'​affectation ​ ||| |  Liste des opérateurs d'​affectation ​ |||
-^  Opérateurs ​ ^  Désignations ​ ^ Résultats ​ ^+^  Opérateurs ​ ^  Désignations ​ ^  Résultats ​ ^
 | Opérateurs unaires ||| | Opérateurs unaires |||
-| **''​++''​** //var// Ré-affectation ​par la pré-incrémentation à 1 | //​var// ​ = //var// + 1 puis retourne //var// | + **''​++''​** //​var// ​   ​Affectation ​par la pré-incrémentation à 1    //​var// ​ = //var// + 1 puis retourne //​var// ​ 
-| //var// **''​++''​** Ré-affectation ​par la post-incrémentation à 1 | Retourne //var//, puis //​var// ​ = //var// + 1 | + //var// **''​++''​** ​   ​Affectation ​par la post-incrémentation à 1   ​ Retourne //var//, puis //​var// ​ = //var// + 1  
-| **''​--''​** //var// Ré-affectation ​par la pré-décrémentation à 1 | //​var// ​ = //var// - 1 puis retourne //var// | + **''​--''​** //​var// ​   ​Affectation ​par la pré-décrémentation à 1    //​var// ​ = //var// - 1 puis retourne //​var// ​ 
-| //var// **''​--''​** Ré-affectation ​par la post-décrémentation à 1 | Retourne //var//, puis //​var// ​ = //var// - 1 |+ //var// **''​--''​** ​   ​Affectation ​par la post-décrémentation à 1   ​ Retourne //var//, puis //​var// ​ = //var// - 1   |
 | Opérateurs binaires ||| | Opérateurs binaires |||
-| //var// **''​=''​** //expr// | Simple affectation | Affecte //epxr// à la variable //var//| + //var// **''​=''​** //​expr// ​   Simple affectation ​   Affecte //epxr// à la variable //​var// ​    
-| //var// **''​+=''​** //​expr//​ | ​Ré-affectation ​par l'​incrémentation | //var// = //var// + //expr// + //var// **''​+=''​** //​expr// ​  ​Affectation ​par l'​incrémentation ​   //var// = //var// + //​expr// ​ 
-| //var// **''​-=''​** //​expr//​ | ​Ré-affectation ​par la décrémentation | //var// = //var// - //expr// |  + //var// **''​-=''​** //​expr// ​  ​Affectation ​par la décrémentation ​   //var// = //var// - //​expr// ​  |  
-| //var// **''​*=''​** //​expr//​ | ​Ré-affectation ​par la multiplication | //var// = //var// * //expr// + //var// **''​*=''​** //​expr// ​  ​Affectation ​par la multiplication ​   //var// = //var// * //​expr// ​ 
-| //var// **''/​=''​** //​expr//​ | ​Ré-affectation ​par la division | //var// = //var// / //expr// + //var// **''/​=''​** //​expr// ​  ​Affectation ​par la division ​   //var// = //var// / //​expr// ​ 
-| //var// **''​%=''​** //expr// | Ré-affectation par modulo | //var// = //​var// ​//expr// |+ //var// **''​%=''​** //​expr// ​  ​Affectation par modulo ​ |  //var// = //var// % //​expr// ​ | 
 +|  //var// **''<​nowiki><<​=</​nowiki>''​** //​expr// ​ |  ​Ré-affectation par le décalage\\ bit-à-bit à gauche  ​ //var// = //​var// ​<​nowiki><<</​nowiki>​ //​expr// ​ | 
 +|  //var// **''<​nowiki>>>​=</​nowiki>''​** //​expr// ​ |  Ré-affectation par le décalage\\ bit-à-bit à droite ​ |  //var// = //var// <​nowiki>>></​nowiki>​ //​expr// ​   | 
 +|  //var// **''&​=''​** //​expr// ​ |  Affectation par le ET binaire ​ |  //var// = //var// <​nowiki>&</​nowiki>​ //​expr// ​ | 
 +|  //var// **''​|=''​** //​expr// ​ |  Affectation par le OU binaire ​ |  //var// = //var// <​nowiki>​|</​nowiki>​ //​expr// ​ | 
 +|  //var// **''​^=''​** //​expr// ​ |  Affectation par le OU exclusif binaire ​ |  //var// = //var// <​nowiki>​^</​nowiki> ​//​expr// ​ |
  
 Exemples : Exemples :
Ligne 172: Ligne 180:
   * **[[doc:​programmation:​shells:​script-bash-variables-arguments-parametres?&#​variables-numeriques-et-calculs|variables numériques et calculs]]**   * **[[doc:​programmation:​shells:​script-bash-variables-arguments-parametres?&#​variables-numeriques-et-calculs|variables numériques et calculs]]**
  
-===== Les opérateurs relationnels ​=====+===== L'​opérateur virgule ​=====
  
-Les opérateurs relationnels permettent la comparaison entre deux epressions numériques.\\  +L'​opérateur virgule, permet de séparer des opérations
-Voir [[doc:​programmation:​shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique#​comparaison-numerique-avec|Comparaison numérique avec ((...))]]+ 
 + ​L'​opérateur virgule ​ ||| 
 +^  Opérateur ​ ^  Désignation ​ ^  Résultat ​ ^ 
 +|Opérateur binaire ||| 
 +|  //expr1// **'',''​** //​expr2// ​ |  Virgule ​ |  Sépare les opération //expr1// et //expr2// pour les réaliser à la suite | 
 + 
 +Exemples :
  
-<note important>​ 
-Le résultat des comparaisons des opérateurs relationnels retourne une valeur booléenne.\\ ​ 
-(**vrai** en cas de succès **faux** en cas d'​échec).\\ ​ 
-\\ 
-Les commandes **let** et **<​nowiki>​((..))</​nowiki>​** suivent le standard C.\\  
-Elles numérisent **faux** avec **0** et **vrai** avec une valeur **non nulle**.\\ ​ 
-\\ 
-Avec bash c'est l'​inverse,​ **faux** est une  valeur **non nulle** et **vrai** correspond à **0**.\\ ​ 
-\\  
-Il en résulte que le code retour renvoyé est l'​inverse du résultat des comparaisons effectuées par **let** ou **<​nowiki>​((..))</​nowiki>​** 
 <code user> <code user>
-echo $((24<42)) +echo $(( 5+5 , 10+5 , 21+21))
-((24<​42));​ echo $?+
 </​code><​code>​ </​code><​code>​
-1 +42 
-0+</​code>​ 
 +Seule la dernière opération est retournée. 
 + 
 +C'est plus utile avec des affectations : 
 +<code user> 
 +echo $(( a=5+5 , b=10+5 , 21+21)) 
 +echo a=$a b=$b 
 +unset a b 
 +</​code><​code>​ 
 +42 
 +a=10 b=15
 </​code>​ </​code>​
-</​note>​ 
 ===== Les opérateurs logiques ===== ===== Les opérateurs logiques =====
  
Ligne 204: Ligne 216:
   * Tout autres valeurs (positive ou négatives),​ souvent **1**, sont comprise comme **vrai**.   * Tout autres valeurs (positive ou négatives),​ souvent **1**, sont comprise comme **vrai**.
  
-... Dans bash, c'est le contraire (voir la note plus haut).+... Dans bash, c'est le contraire (voir la note plus bas).
  
-Trois opérateurs logiques sont disponibles : 1 unaire et deux binaires.+Trois opérateurs logiques sont disponibles : 1 unaire et binaires.
  
 <note important>​Les opérateurs logiques ne doivent être confondus avec les opérateurs bit-à-bit.</​note>​ <note important>​Les opérateurs logiques ne doivent être confondus avec les opérateurs bit-à-bit.</​note>​
Ligne 231: Ligne 243:
 </​code>​ </​code>​
  
-<​note>​L'​opérateur de négation logique s'​utilise uniquement avec des parenthèses : **!(//​expr//​)**.</​note>​+<​note>​L'​opérateur de négation logique ​**!**) ​s'​utilise uniquement avec des parenthèses : **!(//​expr//​)**.</​note>​
  
 Les opérations logiques peuvent se suivre : Les opérations logiques peuvent se suivre :
Ligne 245: Ligne 257:
 </​code>​ </​code>​
  
-Les opérateurs **<​nowiki>&&</​nowiki>​** et **<​nowiki>​||</​nowiki>​**,​ étudient ​leur opérande de droite (//expr2//) que si cela est pertinent :+Les opérateurs **<​nowiki>&&</​nowiki>​** et **<​nowiki>​||</​nowiki>​**,​ étudient ​l'opérande de droite (//expr2//) que si cela est pertinent :
  
 <code user> <code user>
Ligne 260: Ligne 272:
 </​code>​ </​code>​
  
-<​note>​Nous avons placer ​l'​affection **a=10** entre parenthèse ​**(a=10)** pour la protéger contre la priorités ​des opérateurs.\\+<​note>​Nous avons placé ​l'​affection **a=10** entre parenthèses ​**(a=10)**pour la protéger contre la priorité ​des opérateurs.\\
 \\  \\ 
-Si non, l'​opérateur **<​nowiki>&&</​nowiki>​** étant prioritaire à l'​opérateur **=**, les opérations ​effectués sont **<​nowiki>​0 && a</​nowiki>​**,​ puis **=10**, ce qui va générer ​une erreur.+Si non, l'​opérateur **<​nowiki>&&</​nowiki>​** étant prioritaire à l'​opérateur ​d'​affectation ​**=**, les opérations ​effectuées deviennent ​**<​nowiki>​0 && a</​nowiki>​**,​ puis **=10**, ce qui génère ​une erreur.
 \\  \\ 
 <code user> <code user>
Ligne 270: Ligne 282:
 </​code>​ </​code>​
  
-Voir plus bas.+Voir plus bas [[doc:​programmation:​shells:​page-man-bash-iv-symboles-dans-les-calculs-mathematiques#​priorites-des-operateurs|les priorités des opérateurs]].
 </​note>​ </​note>​
  
-S'il n'est pas pertinent d'​étudier l'​opérande de droite et qu'il existe ​un autre opérateur, alors les opération ​se poursuive.+S'il n'est pas pertinent d'​étudier l'​opérande de droite et qu'il existe ​d'autre opérateurs, alors les opérations ​se poursuives. 
 <code user> <code user>
 a=0 a=0
Ligne 288: Ligne 301:
 <note important>​ <note important>​
 Le opération logiques retournent une valeur booléenne.\\ ​ Le opération logiques retournent une valeur booléenne.\\ ​
-(**vrai** en cas de succès **faux** en cas d'​échec).\\ ​ 
 \\ \\
-Les commandes **let** et **<​nowiki>​((..))</​nowiki>​** ​suivent ​le standard C.\\ +Les commandes **let** et **<​nowiki>​((..))</​nowiki>​** ​suivant ​le standard C.\\ 
 Elles numérisent **faux** avec **0** et **vrai** avec une valeur **non nulle**.\\ ​ Elles numérisent **faux** avec **0** et **vrai** avec une valeur **non nulle**.\\ ​
 \\ \\
 Avec bash c'est l'​inverse,​ **faux** est une  valeur **non nulle** et **vrai** correspond à **0**.\\ ​ Avec bash c'est l'​inverse,​ **faux** est une  valeur **non nulle** et **vrai** correspond à **0**.\\ ​
 \\  \\ 
-Il en résulte que le code retour renvoyé est l'​inverse du résultat des comparaisons ​effectuées par **let** ou **<​nowiki>​((..))</​nowiki>​**+Il en résulte que le code retour renvoyé est l'​inverse du résultat des opérations logiques ​effectuées par **let** ou **<​nowiki>​((..))</​nowiki>​**
 <code user> <code user>
 echo $(( !(0) )) echo $(( !(0) ))
Ligne 303: Ligne 315:
 0 0
 </​code>​ </​code>​
 +</​note>​
 +
 +===== Les opérateurs relationnels =====
 +
 +Les opérateurs relationnels permettent la comparaison entre deux epressions numériques.\\ ​
 +Voir [[doc:​programmation:​shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique#​comparaison-numerique-avec|Comparaison numérique avec ((...))]]
 +
 +<note important>​
 +Comme avec les opérateurs logiques, le résultat des comparaisons des opérateurs relationnels retourne une valeur booléenne.\\ ​
 +(**vrai** en cas de succès **faux** en cas d'​échec).\\ ​
 +\\
 +Le code de retour renvoyé est donc contraire au résultat des comparaisons effectuées par **let** ou **<​nowiki>​((..))</​nowiki>​**
 +<code user>
 +echo $((24<​42))
 +((24<​42));​ echo $?
 +</​code><​code>​
 +1
 +0
 +</​code>​
 +</​note>​
 ===== Les opérateurs bit-à-bit ===== ===== Les opérateurs bit-à-bit =====
  
doc/programmation/shells/page-man-bash-iv-symboles-dans-les-calculs-mathematiques.txt · Dernière modification: 26/04/2023 19:29 par bendia

Pied de page des forums

Propulsé par FluxBB