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 [08/04/2014 15:02]
Hypathie [Symboles dans les calculs mathématiques]
doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques [09/07/2014 18:09]
Hypathie [Écriture utile pour les boucles]
Ligne 1: Ligne 1:
-======Page man bash IV, Symboles ​dans les calculs ​mathématiques======+======Bash : les symboles ​dans les calculs======
  
-  * Objet : du tuto FIXME +  * Objet : suite de la série de wiki visant à maîtriser bash via les différents caractère spéciaux. 
-  * Niveau requis : FIXME {{tag>​débutant ​avisé}} +  * Niveau requis : {{tag>​débutant}} 
-  * Commentaires : //Contexte d'​utilisation du sujet du tuto. // FIXME+  * 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 ​à-placer}} - FIXME Pour choisir, voir les autres Tags possibles dans [[:​atelier:#​tags|l'​Atelier]]. +  * Suivi : {{tag>​en-chantier à-tester }}  
-    * Création par **Hypathie** 08/​04/​2014 +    * Création par [[user>Hypathie]] 08/​04/​2014 
-    * Testé par <​...> ​le <...> FIXME +    * Testé par Hypathie ​le Avril 2014 
-  * Commentaires sur le forum : [[url Lien vers le forum concernant ce tuto]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) FIXME+  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​pid=87499#​p87499 ​ici]] ((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
  
-**Nota :**+ 
 +  ​[[atelier:​chantier:​bash-les-differents-caracteres-speciaux|Vision d'​ensemble]] 
 +  ​[[atelier:chantier:​la-page-man-bash-les-caracteres-speciaux|Détail et caractères]] 
 +  ​[[atelier:​chantier:​la-page-man-bash-ii-les-operateurs-lexicographiques|Les opérateurs lexicographiques]] 
 +  ​[[atelier:​chantier:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Les opérateurs de comparaison numérique]] 
 +  * ;-) 
 +  * [[atelier:​chantier:​page-man-bash-v-les-tableaux|Les tableaux]] 
 +  * [[atelier:​chantier:​man-bash-vi-les-caracteres-de-transformation-de-parametres|Les caractères de transformation de parametres]] 
 +  * [[atelier:​chantier:​bash-vii-globs-etendus-regex| Globs étendus et regex]]
  
 Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
  
-=====Symboles dans les calculs mathématiques ​===== +=====Opérateurs arithmétiques ​=====
-====1) La construction :==== +
-<​code>​ +
- ​((...))  +
-</​code>​ permet une évaluation arithmétique.  +
-<​code>​ +
-#​!/​bin/​bash +
-a=$(( 5 + 3 )) +
-echo $a           # réponse 8 +
-b=$(( 5 - 2 )) +
-echo $b           # réponse 3 +
-c=$(( 6 * 2 )) +
-echo $c           # réponse 12 +
-d=$(( 10 / 3 )) +
-echo $d           # réponse 3 +
-e=$(( 10 % 3 )) +
-echo $e           # réponse 1 +
-</​code>​+
  
-====2) avec la commande let (les signes mathématiques ont la même fonction) :==== +^opérateurs ​ ^opérations ​                    ^ 
-<code> +| ''​<nowiki> +</nowiki> '' ​   | addition ​                     | 
-#​!/​bin/​bash +| ''​ <​nowiki>​-</nowiki> '' ​   | soustraction ​                 | 
-let "a = 5" +| ''​ <​nowiki>​/</​nowiki>​ '' ​   | division (récup. le quotient) |  
-let "b = 10" +'' <​nowiki>​%</​nowiki>​ '' ​   | modulo (récup. ​le reste) ​     | 
-let "c = a b" +| ''​ <​nowiki>​* </​nowiki>'' ​   | multiplication ​               | 
-let "e= a * b" +| ''​ <​nowiki>​**</nowiki'' ​  | puissance (''​bash 2.02 et sup.''​) |
-let "f= b a" +
-let "g= b % a" +
-echo -e  "$c \n$e \n$f \n$g" ​ # ou /bin/echo "$c $e $f $g" +
-# réponse :  +
-15  +
-50  +
- +
-+
-# bashisme de l'option -e pour forcer ​le retour à la ligne pour chaque appel de valeur $c $e $f $g +
-# réponse : 15 50 2 0 +
-</code>+
  
-====3) écriture proche de c :==== +>Pour les calculs complexes bash n'est pas adapté, il faut utiliser le langage ''​bc''​.
-<​code>​ +
-let "a = 5" +
-let "b = 10" +
-let "c = a *= 3" +
-let "d = a += 3" ​    # valeur précédente de a conservée pour calculer d : 15+3 =18 +
-let "e = b /= 3" +
-let "f = b /= 3" ​   # valeur précédente de b conservée pour calculer f : 3/3 =1 +
-echo "c=$c d=$d e=$e f=$f" # réponse : c=15 d=18 e=3 f=1 +
-i=1 +
-let "i += 7" +
-echo "​i=$i" ​       # réponse : i=8 +
-j=4 +
-let "j *= 5" +
-echo "​j=$j" ​       # réponse : j=20 +
-</code>+
  
-====4) écriture utile pour les boucles : ==== +=====Opérateurs d'​affectation arithmétique=====
-  * **post-incrémentation avec conservation de la la valeur et idem pour pré-incrémentation :**+
  
-<​code>​+^opérateurs ​                        ​^opérations ​                      ^ 
 +| ''<​nowiki>​=</​nowiki>​ '' ​          | affectation arithmétique ​       | 
 +| ''<​nowiki>​+=</​nowiki>​ '' ​         | incrémentation ​                 | 
 +| ''<​nowiki>​-=</​nowiki>​ '' ​         | décrémentation ​                 | 
 +| ''<​nowiki>/​=</​nowiki>​ '' ​         | affectation par division ​       | 
 +| ''<​nowiki>​+=</​nowiki>​ '' ​         | affectation par multiplication ​ | 
 +| ''<​nowiki>​%=</​nowiki>​ '' ​         | afectation du reste             | 
 + 
 +**Voir :** 
 +  * **[[atelier:​chantier:​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]]** 
 + 
 +=====Opérateurs binaires ===== 
 +Ces opérateurs s'​utilisent sur des binaires, (sur des 1 et des zéro). 
 + 
 +^ Opérateurs ​      ^ significations ​                                            ^ 
 +| ''<<'' ​ | décalage d'un bit à gauche (=mutiplication par deux)       | 
 +| ''>>''​ | décalage d'un bit à droite (=division par deux)            | 
 +| ''&<'' ​  | "​et"​ logique ​ (ex : on a une variable=1; si on fait &1 cela fait 1 (en binaire 1 et 1 = 1)| 
 +| ''​|<'' ​ | ou (inclusif) binaire ​                                     | 
 +| ''​~'' ​  | non binaire ​                                               | 
 +| ''​^'' ​  | XOR (ou exclusif) binaire ​                                 |  
 + 
 +<​note>​ 
 +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. 
 + 
 +> ''&&'' ​ : 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 autre chose que 0 
 +> ''​!'' ​  : inverse du retour d'une commande, c'est à dire un "​non"​ logique 
 +^_^ 
 +</​note>​ 
 +===== Écriture utile pour les boucles ===== 
 +===Post-incrémentation et pré-incrémentation :=== 
 + 
 +<​code ​bash>
 #!/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 de x est incrémenté ​($x est donc égal à 21) +(( y = x++ ))      # d'​abord la valeur de x est conservée dans la valeur de y (donc $y= 20) puis la valeur ​ 
-                 ​# les espaces autour du signe = ne sont pas obligatoires +                   #  ​de x est incrémentée ​($x est donc égal à 21) 
-echo "y=$y x=$x" ​ # réponse : y=20 x=21+                   ​# les espaces autour du signe = ne sont pas obligatoires 
 +echo "y=$y x=$x" ​  ​# réponse : y=20 x=21
 </​code>​ </​code>​
  
-<​code>​+<​code ​bash>
 #!/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 la valeur du x incrémentée+(( 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é
                    # 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>
 #!/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) puis la valeur de x est décrémenté ​($x est donc égal à 19) +(( y = x-- ))      # d'​abord la valeur de x est conservée dans la valeur de y (donc $y= 20)  
-                # les espaces autour du signe = ne sont pas obligatoires ​  +                   # ​puis la valeur de x est décrémentée ​($x est donc égal à 19) 
 +                   ​# 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>
 #!/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 reçoit la valeur du x incrémentée ​(donc $y=19) +(( y = --x ))           ​# d'​abord la valeur de x est décrémentée ($x=19), puis la valeur de y  
-                  # les espaces autour du signe = ne sont pas obligatoires +                        # reçoit la valeur du x incrémenté ​(donc $y=19) 
-echo "y=$y x=$x" ​  ​#réponse : y=19 x=19+                        # les espaces autour du signe = ne sont pas obligatoires 
 +echo "y=$y x=$x" ​       # réponse : y=19 x=19
 </​code>​ </​code>​
  
-===La suite, c'est ici : === +=====Tuto précédent ===== 
-[[atelier:​chantier:​page-man-bash-v-les-tableaux]]+ 
 +[[atelier:​chantier:​page-man-bash-iii-les-operateurs-de-comparaison-numerique|Bash : les opérateurs de comparaison numérique]]
  
-==tuto précédent=== +=====La suite, c'est ici ===== 
-[[atelier:​chantier:​page-man-bash-iii-les-operateurs-de-comparaison-numerique?&#​operateurs-de-comparaison-numerique]]+[[atelier:​chantier:​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