[shell] Comment additionner des valeurs [Résolu/Fermé]

Messages postés
23
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
12 février 2008
- - Dernière réponse :  arabesque - 20 nov. 2019 à 15:06
Bonjour

Je découvre le shell sous unix (enfin, je re découvre, mais à un niveau nettement supérieur à mes connaissances antérieures)

Je cherche dans un script à additioner 2 valeurs "entières". Mais vu que les variables en shell sont des chaines, j'ai beau chercher, je ne trouve pas de solution propre.

nbComErr= $txtNbComErr1 + $txtNbComErr2 # => marche pas.
nbComErr= $(expr $txtNbComErr1 + $txtNbComErr2) # => marche pas.

echo "($txtNbComErr1 + $txtNbComErr2)" | bc # marche bien, mais comment récupérer le résultat dans une variable
(j'ai bien trouvé la solution fichier, mais je ne trouve pas ca propre....)

Si quelqu'un sait, je suis preneur des solutions :)
Afficher la suite 

4 réponses

Meilleure réponse
22
Merci
c plus simple et plus performant ;)
a=1
b=2
resultat=$(($a+$b))

Dire « Merci » 22

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 65258 internautes nous ont dit merci ce mois-ci

Messages postés
23911
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
2691
7
Merci
Salut,
A = `expr $B + $C`
???
avec des back-quote (ALT-GR 7)...
_vince
Messages postés
37
Date d'inscription
mardi 30 janvier 2007
Statut
Membre
Dernière intervention
14 mai 2008
-
En ksh, il y a aussi les double parentheses:

B=5
C=7
(( A = B + C ))

Par contre, je ne connais pas la difference avec la solution avec 'expr'. Si quelqu'un sait...
despubs
Messages postés
5
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
23 août 2012
-
2 possibilité au chois
soit les variables
A=0
B=1
C=2

SOLUTION 1
Commande EXPRT (+infos man expr)
Exemeples 1
Ecriture correcte avec espace
A = 'expr $B + $C'
resultat
echo $A
3
Ecriture correcte SANS espace
résultat incorrecte
echo $A
2+1

SOLUTIION 2
Utilisation des doubles parenthèses
Plus souple solution1 puisque tolérance
à l'utilisation d'espace ou non
"(())"
Exemple
(( A = $B + $C )) ou (( A = $B+$C )) ou (( A= $B+$C )) etc...
echo $A
3
Messages postés
23
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
12 février 2008
4
5
Merci
La maitrise du $ pour faire un simple =, c'est un énorme pas en avant pour moi.

Merci lami20j
lami20j
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3404 -
de rien :-)
plus simple encore
a=5;
b=7;
let c=a+b;
écho $c;
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3404
2
Merci
Salut,
resultat=$(echo "($txtNbComErr1 + $txtNbComErr2)" | bc)
--
lami20j