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 [04/06/2014 10:19]
Hypathie [Symboles dans les calculs mathématiques]
doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques [24/02/2023 21:19]
agp91 [Bash : les symboles dans les calculs]
Ligne 2: Ligne 2:
  
   * Objet : suite de la série de wiki visant à maîtriser bash via les différents caractère spéciaux.   * Objet : suite de la série de wiki visant à maîtriser bash via les différents caractère spéciaux.
-  * Niveau requis : {{tag>​débutant}}+  * Niveau requis : {{tag>​débutant ​avisé}}
   * Commentaires : scripts   * Commentaires : scripts
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  * Suivi : {{tag>​en-chantier ​à-tester ​}}  +  * Suivi :  {{tag>​en-chantier}} 
-    * Création par **Hypathie** 08/​04/​2014 +    * Création par [[user>Hypathie]] le 08/​04/​2014 
-    * Testé par <Hypathie> le <Avril 2014> +    * Testé par [[user>Hypathie]]  ​Avril 2014 
-  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​pid=87499#p87499 ​Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))+  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​pid=140882#p140882 ​ici]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
  
-**RAPPEL DU PLAN DE LA SÉRIE : **\\ 
  
-1) Intro I :  ​[[atelier:chantier:​bash-les-differents-caracteres-speciaux|Bash : Introduction]]\\ +  * [[doc:programmation:​shells:​bash-les-differents-caracteres-speciaux|Vision d'​ensemble]] 
 +  * [[doc:​programmation:​shells:​la-page-man-bash-les-caracteres-speciaux|Détail et caractères]] 
 +  * [[doc:​programmation:​shells:​la-page-man-bash-ii-les-operateurs-lexicographiques|Les opérateurs lexicographiques]] 
 +  * [[doc:​programmation:​shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs de comparaison numérique]] 
 +  * ;-) 
 +  * [[doc:​programmation:​shells:​page-man-bash-v-les-tableaux|Les tableaux]] 
 +  * [[doc:​programmation:​shells:​man-bash-vi-les-caracteres-de-transformation-de-parametres|Les caractères de transformation de parametres]] 
 +  * [[doc:​programmation:​shells:​bash-vii-globs-etendus-regex| Bash : Variables, globs étendus, ERb, ERe]]
  
-2) chap II : [[atelier:​chantier:​la-page-man-bash-les-caracteres-speciaux|Bash : Détail et caractères]]\\ ​+<note important>​ 
 +Page en court de réécriture 
 +</​note>​ 
 +===== Introduction =====
  
-3) chap III : [[atelier:chantier:la-page-man-bash-ii-les-operateurs-lexicographiques|Bash : les opérateurs ​lexicographiques]]\\ +Dans la page précédente ([[doc:programmation:​shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs ​de comparaison numérique]]), nous avons abordé la commande interne **let** et la commande composée **<​nowiki>​((...))</​nowiki>​**.\\  
 +Nous complémentons ici leurs usages, pour réaliser des opérations mathématiques.
  
-4chap IV : [[atelier:​chantier:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Bash : les opérateurs de comparaison numérique]]\\ +Les commandes **let** et **<​nowiki>​((...))</​nowiki>​** sont les seules commandes internes que bash dispose pour réaliser des opérations mathématiques.\\  
 +A travers elles, bash est limité à opérer que sur des entiers signés (positifs ou négatifs).\\  
 +Le résultat de l'​évaluation d'une expression sera toujours un entier décimal signé.
  
-5chap V : C'est ici !\\ +Pour réaliser des opérations avec des nombres à virgule ou plus complexes, il faut nous tourner vers des commandes externes tel que **bc** (non installé par défautou **awk**. Ou alors utiliser d'autres langages interprétés tel que **perl**, **python**, etc (awk, perl et python sont disponibles par défaut sur les systèmes Debian).
  
-6chap VI [[atelier:​chantier:​page-man-bash-v-les-tableaux|Bash : les tableaux]]\\ ​+Avec **let** et **<​nowiki>​((...))</​nowiki>​**,​ la plage numérique autorisée est **-9223372036854775808 < 0 > 9223372036854775807**
  
-7chap VII : [[atelier:​chantier:​man-bash-vi-les-caracteres-de-transformation-de-parametres|Bash ​les caractères de transformation de parametres]]\\ ​+Après l'​évaluation des expression qu'​elles contiennent,​ **let** et **<​nowiki>​((...))</​nowiki>​** renvoient le code de retour ​:
  
-8) chap VIII : [[atelier:​chantier:​bash-vii-globs-etendus-regex|Bash : globs étendus et regex]]+  * **0**, si le résultat est inférieur ou supérieur à 0. 
 +  * **1**, si le résultat est égale à 0.
  
-Contributeurs,​ les FIXME sont là pour vous aidersupprimez-les une fois le problème corrigé ou le champ rempli !+La commande **<​nowiki>​((...))</​nowiki>​** peut-être préfixée du caractère de remplacement **$** pour former la commande **<​nowiki>​$((...))</​nowiki>​**afin d’être remplacer par l'​évaluation de l’expression qu'​elle contient.
  
-=====Symboles ​dans les calculs mathématiques =====+<note important>​ 
 +La commande **$[...]** équivalente à la commande **<​nowiki>​$((..))</​nowiki>​** __**ne doit plus être utilisée**__.\\  
 +\\  
 +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. 
 +</​note>​
  
-====Opérateurs arithmétiques ====+=====Opérateurs arithmétiques ​=====
  
-^opérateurs ​       ^opérations ​                    ^ +^opérateurs ​ ^opérations ​                    ^ 
-| <code>+</code  ​| addition ​                     | +''​<nowiki> +</nowiki'' ​   ​| addition ​                     | 
-| <code> -</code | soustraction ​                 | +'' ​<nowiki>-</nowiki'' ​   ​| soustraction ​                 | 
-| <code>/</code  ​| division (récup. le quotient) |  +'' ​<nowiki>/</nowiki'' ​   ​| division (récup. le quotient) |  
-| <code>%</code  ​| modulo (récup. le reste) ​     | +'' ​<nowiki>%</nowiki'' ​   ​| modulo (récup. le reste) ​     | 
-| <code>*</code  ​| multiplication ​               | +'' ​<nowiki>* </nowiki>'' ​   ​| multiplication ​               | 
-| <code>** </code> | puissance (bash 2.02 et sup.) |+'' ​<nowiki>**</nowiki'' ​  | puissance (''​bash 2.02 et sup.''​) |
  
-**Pour les calculs complexes bash n'est pas adapté, il faut utiliser le langage bc.**+>Pour les calculs complexes bash n'est pas adapté, il faut utiliser le langage ​''​bc''​.
  
-====Opérateurs d'​affectation arithmétique====+=====Opérateurs d'​affectation arithmétique=====
  
-^opérateurs ​               ^opérations ​                      ^ +^opérateurs ​                        ​^opérations ​                      ^ 
-| <code>=</code>           | affectation arithmétique ​       | +''​<nowiki>=</nowiki'' ​          | affectation arithmétique ​       | 
-| <code>+=</code>          | incrémentation ​                 | +''​<nowiki>+=</nowiki'' ​         | incrémentation ​                 | 
-| <code>-=</code>          | décrémentation ​                 | +''​<nowiki>-=</nowiki'' ​         | décrémentation ​                 | 
-| <code>/=</code>          | affectation par division ​       | +''​<nowiki>/=</nowiki'' ​         | affectation par division ​       | 
-| <code>+=</code>          | affectation par multiplication ​ | +''​<nowiki>+=</nowiki'' ​         | affectation par multiplication ​ | 
-| <code>%=</code>          | afectation du reste             |+''​<nowiki>%=</nowiki'' ​         | afectation du reste             |
  
-**Voir :**\\  +**Voir :** 
-  * **[[atelier:chantier:​script-bash-variables-arguments-parametres?&#​typologie-des-variables|typologie de variables]]** +  * **[[doc:programmation:​shells:​script-bash-variables-arguments-parametres?&#​typologie-des-variables|typologie de variables]]** 
-  * **[[atelier:chantier:​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]]**
  
-====Opérateurs binaires ====+=====Opérateurs binaires ​=====
 Ces opérateurs s'​utilisent sur des binaires, (sur des 1 et des zéro). Ces opérateurs s'​utilisent sur des binaires, (sur des 1 et des zéro).
  
 ^ Opérateurs ​      ^ significations ​                                            ^ ^ Opérateurs ​      ^ significations ​                                            ^
-| <code><< </​code> ​| décalage d'un bit à gauche (=mutiplication par deux)       | +''​<<''  ​| décalage d'un bit à gauche (=mutiplication par deux)       | 
-<code>>> </​code> ​| décalage d'un bit à droite (=division par deux)            | +''​>>'' ​| décalage d'un bit à droite (=division par deux)            | 
-<​code>​&</​code> ​  | ET logique ​ (ex : on a une variable=1; si on fait &1 cela fait 1 (en binaire 1 et 1 = 1)| +''​&<'' ​  | "​et" ​logique ​ (ex : on a une variable=1; si on fait &1 cela fait 1 (en binaire 1 et 1 = 1)| 
-<​code>​|</​code> ​  OU (inclusif) binaire ​                                     | +''​|<''  ​ou (inclusif) binaire ​                                     | 
-<​code>​~</​code> ​  | NON binaire ​                                               | +''​~'' ​  | non binaire ​                                               | 
-<​code>​^</​code> ​  | XOR (ou exclusif) binaire ​                                 | +''​^'' ​  | XOR (ou exclusif) binaire ​                                 | 
  
 <​note>​ <​note>​
-REMARQUE +Le ''&<''​ ( "et" binaire), le ''​|<''​ ("​ou"​ binaire), et le ''​~''​ ("non" binaire)\\ ​peuvent aussi être remplacés (de façon équivalente) par les opérateurs logiques que l'on a vus au sujet de la composition de commandes sur erreur ​ou sur réussite. 
-Les **"ETOU et NON" ​logiques** ​peuvent aussi être remplacés (de façon équivalente) par les **opérateurs logiques** que l'on a vu pour la composition de commandes sur erreur ​et sur réussite. + 
-<​code>​ +> ''​&&''  ​: exécution de la commande suivante si, et seulement si la précédente renvoie 0 
-&& ​  ​: exécution de la commande suivante si, et seulement si la précédente renvoie 0 +
-||   ​exécutuion ​de la commande suivante si, et seulement si la précédente renvoie autre chose que 0 +> ''​||''  ​exécution ​de la commande suivante si, et seulement si la précédente renvoie autre chose que 0 
-   : inverse du retour d'une commande, c'est à dire un "NON" logique +
-</​code>​+> ''​!'' ​  : inverse du retour d'une commande, c'est à dire un "non" logique 
 +^_^
 </​note>​ </​note>​
-==== écriture ​utile pour les boucles ​==== +===== Écriture ​utile pour les boucles ​===== 
-  * **post-incrémentation ​avec conservation de la la valeur ​et idem pour pré-incrémentation :**+===Post-incrémentation et pré-incrémentation :===
  
-<​code>​+<​code ​bash script>
 #!/bin/bash #!/bin/bash
 declare -i x=20 y  # ici les signes = permettent une affection declare -i x=20 y  # ici les signes = permettent une affection
 (( y = x++ ))      # d'​abord la valeur de x est conservée dans la valeur de y (donc $y= 20) puis la valeur ​ (( y = x++ ))      # d'​abord la valeur de x est conservée dans la valeur de y (donc $y= 20) puis la valeur ​
-                   # ​ de x est incrémenté ​($x est donc égal à 21)+                   # ​ de x est incrémentée ​($x est donc égal à 21)
                    # les espaces autour du signe = ne sont pas obligatoires                    # les espaces autour du signe = ne sont pas obligatoires
 echo "y=$y x=$x" ​  # réponse : y=20 x=21 echo "y=$y x=$x" ​  # réponse : y=20 x=21
 </​code>​ </​code>​
  
-<​code>​+<​code ​bash script>
 #!/bin/bash #!/bin/bash
 declare -i x=20 y declare -i x=20 y
 (( y = ++x ))      # d'​abord la valeur de x est incrémentée puis la valeur de y reçoit ​ (( y = ++x ))      # d'​abord la valeur de x est incrémentée puis la valeur de y reçoit ​
-                   # la valeur du x incrémentée+                   # la valeur du x incrémenté
                    # les espaces autour du signe = ne sont pas obligatoires                    # les espaces autour du signe = ne sont pas obligatoires
 echo "y=$y x=$x" ​  # réponse : y=21 x=21 echo "y=$y x=$x" ​  # réponse : y=21 x=21
 </​code>​ </​code>​
  
-  * **post-décrémentation ​avec conservation de la la valeur ​et idem pour pré-décrémentation :** +===Post-décrémentation et pré-décrémentation :=== 
-<​code>​+<​code ​bash script>
 #!/bin/bash #!/bin/bash
 declare -i x=20 y declare -i x=20 y
 (( y = x-- ))      # d'​abord la valeur de x est conservée dans la valeur de y (donc $y= 20)  (( y = x-- ))      # d'​abord la valeur de x est conservée dans la valeur de y (donc $y= 20) 
-                   # puis la valeur de x est décrémenté ​($x est donc égal à 19)+                   # puis la valeur de x est décrémentée ​($x est donc égal à 19)
                    # les espaces autour du signe = ne sont pas obligatoires ​                      # les espaces autour du signe = ne sont pas obligatoires ​  
 echo "y=$y x=$x" ​  # réponse : y=20 x=19 echo "y=$y x=$x" ​  # réponse : y=20 x=19
 </​code>​ </​code>​
  
-<​code>​+<​code ​bash script>
 #!/bin/bash #!/bin/bash
 declare -i x=20 y declare -i x=20 y
 (( y = --x ))           # d'​abord la valeur de x est décrémentée ($x=19), puis la valeur de y  (( y = --x ))           # d'​abord la valeur de x est décrémentée ($x=19), puis la valeur de y 
-                        # reçoit la valeur du x incrémentée ​(donc $y=19)+                        # reçoit la valeur du x incrémenté ​(donc $y=19)
                         # les espaces autour du signe = ne sont pas obligatoires                         # les espaces autour du signe = ne sont pas obligatoires
 echo "y=$y x=$x" ​       # réponse : y=19 x=19 echo "y=$y x=$x" ​       # réponse : y=19 x=19
 </​code>​ </​code>​
 +<note tip>
 +En bref,​\\ ​
 +__**Post-incrémentation/​décrémentation**__ : Les signes d'​incrémentation (**''​++''​**) ou de décrémentation (**''<​nowiki>​--</​nowiki>''​**) sont placés **après** une valeur à incrémentée (+1) ou à décrémenter (-1) ; cette valeur est conservée dans "​y"​ puis elle est **incrémentée (+1)** ou **décrémentée (-1)**.\\ ​
  
-===tuto précédent ​:===+__**Pré-incrémentation/​décrémentation**__ : Les signes d'​incrémentation (**''​++''​**) ou de décrémentation (**''<​nowiki>​--</​nowiki>''​**) sont placés **avant** une valeur à incrémentée ou à décrémenter ; cette valeur est **incrémentée (+1)** ou **décrémentée (-1)** puis elle est conservée dans "​y"​. 
 +</​note>​ 
 +=====Tuto ​précédent ​=====
  
-[[atelier:chantier:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Bash : les opérateurs de comparaison numérique]]+[[doc:programmation:​shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Bash : les opérateurs de comparaison numérique]]
  
-===La suite, c'est ici === +=====La suite, c'est ici ===== 
-[[atelier:chantier:​page-man-bash-v-les-tableaux|Bash : les tableaux]]+[[doc:​programmation:shells:​page-man-bash-v-les-tableaux|Bash : les tableaux]]
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