Sommer les lignes d'un fichiers texte

Résolu
bloomingdals Messages postés 87 Statut Membre -  
bloomingdals Messages postés 87 Statut Membre -
Bonsoir,
j'ai écrit un script shell qui prend un fichier en entrée et somme ses lignes (les lignes étant des entiers). mais ca ne fonctionne pas.

voici mon script
sum=0
while read ligne
do sum=expr $sum + $ligne
done < test.txt
echo "la somme est $sum"



est ce que c'est possible de m'aider à le faire fonctionner merci bcp

6 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    il faut exécuter la commande expr, un simple = ne le fait pas
    do sum=$(expr $sum + $ligne)
    0
  2. bloomingdals Messages postés 87 Statut Membre 2
     
    ah oui c'est vrai merci bcp ca fonctionne parfaitement.
    est ce que c'est possible de retourner la somme finale dans une variable pour l'exploiter plus tart (disons par un code java)?? de cette facon quand j'appelle le script il me retourne un entier?
    0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    la variable $sum contient le total, elle peut être passée en paramètres ou autre
    0
  4. bloomingdals Messages postés 87 Statut Membre 2
     
    ah d'accord merci. Autre question: je veux renvoyer cette somme dans le même fichiers de manière à écraser son ancien contenu par la valeur sum.
    avec la reddirection >> ca ecrit à la fion du fichier et avec > ca me renvoie un fichier vide!
    y'a t-il un moyen de le faire (sans passer par un fichier temporaire ca c'est facile j'arrive a le faire)
    merci
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      non, on ne peut pas écrire dans le fichier qu'on est en train de lire
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. bloomingdals Messages postés 87 Statut Membre 2
     
    non je veux dire après que l'opération de lecture ne soit terminée (après être sortie de la boucle while), il n'y a pas de moyen pour écraser le contenu de test.txt avec la valeur de sum??
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      ...
      ...
      done < test.txt
      echo "la somme est $sum"
      echo $sum > test.txt
      
      0
  7. bloomingdals Messages postés 87 Statut Membre 2
     
    oui exactement ca marche merci bcp
    0