![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Shell Vos questions sur l'utilisation des commandes shell |
![]() |
|
|
Outils de la discussion |
|
|
#4 (permalink) |
![]() Date d'inscription: avril 2007
Messages: 339
|
Soit le fichier chiffres.txt contenant les lignes avec les chiffres, on va considérer d'ailleurs qu'il n'y a qu'un chiffre sur chaque ligne de ce fichier.
Code :
#!/bin/bash
valeur=0
for i in `cat chiffres.txt` ; do
valeur=`expr $valeur + $i`
done
echo $valeur
|
|
|
|
|
|
#5 (permalink) |
|
Membre Confirmé
![]() Date d'inscription: septembre 2007
Localisation: Genève
Âge: 45
Messages: 272
|
Pour faire dans la diversité, voici une autre solution, ni meilleure ni plus mauvaise que celle de CedrX:
Code :
#!/bin/bash
valeur=0
while read number
do
valeur=$(( $valeur + $number ))
done < chiffres.txt
echo $valeur
|
|
|
|
|
|
#6 (permalink) |
|
Membre éprouvé
![]() Date d'inscription: octobre 2008
Âge: 30
Messages: 416
|
Elle est infiniment meilleure que celle de CedrX. Pas à cause du choix de $(( ... )) au lieu de expr, mais parce que celle de CedrX va merder si les lignes contiennent des espaces. Elle est aussi beaucoup plus gourmande en mémoire.
|
|
|
|
|
|
#9 (permalink) |
![]() Date d'inscription: avril 2007
Messages: 339
|
Et je suis infiniment d'accord avec toi
![]() Effectivement elle est plus gourmande en mémoire. je concède. De là à dire qu'elle est infiniment plus mauvaise... Mais bon il y a des gens qui proposent des solutions et d'autres qui critiquent c'est bien connu |
|
|
|
|
|
#10 (permalink) |
![]() Date d'inscription: juillet 2004
Localisation: Made in normandy
Âge: 30
Messages: 2 139
|
Signaler qu'une solution est meilleure qu'une autre est une chose.
Utiliser un superlatif tel que "infiniment" en est une autre. Il faut être précis et expliquer ses choix. Utiliser un superlatif disproportionné c'est exagérer et ça n'est pas être clair. Je suis également d'accord : autant éviter expr, en plus ça évite une dépendance et bash sait évaluer tout seul, donc autant en abuser. Merci à tous pour vos interventions constructives.
__________________
Donne un poisson à un homme et tu le nourris pour un jour, Apprends-lui à pêcher et tu le nourris pour toujours. |
|
|
|
|
|
#11 (permalink) | ||
|
Membre éprouvé
![]() Date d'inscription: octobre 2008
Âge: 30
Messages: 416
|
Citation:
Citation:
J'arrête avec ce thread avant de heurter trop de sensibilités... |
||
|
|
|
|
|
#12 (permalink) |
|
Membre Expert
![]() |
Et cette méthode vous en pensez quoi ?
Code :
#!/bin/ksh
valeur=0
while read number
do
(( valeur += number ))
done < chiffres.txt
echo $valeur
|
|
|
|
|
|
#13 (permalink) |
|
Membre éprouvé
![]() Date d'inscription: octobre 2008
Âge: 30
Messages: 416
|
Ben non c'est pas infiniment merdique, c'est très bien
Ce qui me fait penser d'ailleurs que dans la solution de jmelyn, il vaut mieux faire $(( valeur + number )) plutôt que $(( $valeur + $number )) |
|
|
|
|
|
#14 (permalink) |
|
Membre Confirmé
![]() Date d'inscription: septembre 2007
Localisation: Genève
Âge: 45
Messages: 272
|
Le côté technique de ce fil est très intéressant, plein de bonnes choses à en retirer. Merci à tous les intervenants, même à Ohemeg qui a posé la question!
Le côté jugement me semble superfétatoire car il risque d'embrouiller les lecteurs et choquer la personne visée. Nous sommes ici par plaisir et pour l'enrichissement mutuel. Chacun peut faire des erreurs (et je suis le premier), ne pas connaître certains aspects de la chose discutée, mais nul n'est tenu à la perfection, je crois. Tentons, essayons, changeons... à plusieurs le résultat est généralement meilleur que sorti d'une seule cervelle. Bon weekend à ceux qui quittent le clavier pour ces deux jours. |
|
|
|
|
![]() |
![]() |
||
calculer une liste de chiffres
|
||
| Outils de la discussion | |
|
|