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

Ceci est une ancienne révision du document !


man bash V, les symboles dans les calculs mathématiques

Nota : suite du petit commentaire sur les caractères de la page man bash

1) Intro I : Bash : Introduction

2) chap II : Bash : Détail et caractères

3) chap III : Bash : les opérateurs lexicographiques

4) chap IV : opérateurs de comparaison numérique

5) chap V : C'est ici !

6) chap VI : les tableaux

7) chap VII : man-bash-vi-les-caracteres-de-transformation-de-parametres

8) chap VIII : bash-vii-globs-etendus-regex

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

1) La construction :

 ((...)) 

permet une évaluation arithmétique.

#!/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

2) avec la commande let (les signes mathématiques ont la même fonction) :

#!/bin/bash
let "a = 5"
let "b = 10"
let "c = a + b"
let "e= a * b"
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 
2 
0
# 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

3) écriture proche de c :

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

4) écriture utile pour les boucles :

  • post-incrémentation avec conservation de la la valeur et idem pour pré-incrémentation :
#!/bin/bash
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)
                   # les espaces autour du signe = ne sont pas obligatoires
echo "y=$y x=$x"   # réponse : y=20 x=21
#!/bin/bash
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
                   # les espaces autour du signe = ne sont pas obligatoires
echo "y=$y x=$x"   # réponse : y=21 x=21
  • post-décrémentation avec conservation de la la valeur et idem pour pré-décrémentation :
#!/bin/bash
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)
                   # les espaces autour du signe = ne sont pas obligatoires   
echo "y=$y x=$x"   # réponse : y=20 x=19
#!/bin/bash
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)
                        # les espaces autour du signe = ne sont pas obligatoires
echo "y=$y x=$x"        # réponse : y=19 x=19

La suite, c'est ici :

tuto précédent :

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
doc/programmation/shells/page-man-bash-iv-symboles-dans-les-calculs-mathematiques.1400924671.txt.gz · Dernière modification: 24/05/2014 11:44 par Hypathie

Pied de page des forums

Propulsé par FluxBB