[bash]Impossible de faire une simple addition

Bonjour,

Voilà le code sur lequel je suis depuis ce midi, rien à faire, il y a un problème avec la variable $line...
Je suis sous Linux, j'ai un fichier qui contiens des chiffres et retours à la ligne entre chaques chiffres.
total=0
for line in $(cat monfichier); do
	total=$(echo "$line + $total" | bc)
done

L'erreur est la suivante :
(standard_in) 1: illegal character: ^M
(standard_in) 2: syntax error

Celà viens de la variable $line, quand je l'affiche elle m'affiche bien mes chiffres pourtant.
Mon script marche si par exemple je fais $line2=254 et que j'utilise ma variable line2 au lieu de line.
Alors qu'est-ce qui ne va pas avec cette variable line ? y aurait-il des caracteres cachés ? Comment puis-je l'epurer ?

Merci de votre aide

3 réponses

  1. Bonjour,
    il semblerait que l erreur renvoyée par le systeme montre ds caracteres a la noix dans ton ficher (^M en fin de ligne)., generalement du a un transfert de fichier dos vers Unix
    enleves les et ca marche tout bien.

    sous linux dos2unix -n ficher1 fichier2
    ou sous vi : :%s/<CTRL+SHIFT+M Touche Entree>//g
    Ouala
    1. Hmmm etrange...
      Je te remercie beaucoup d'avoir testé et serait-il possible que tu essais avec mon fichier texte ?
      Je l'ai généré avec un

      awk | { print $NF }

      afin de recuperer des chiffres en fin de ligne d'une autre commande. Je suis à peu près sur que ca vient des carracteres de fin de ligne mais il doit y aoir moyen de "nettoyer" cette variable.
      Il faut que je trouve comment, en esperant que je ne fasse pas fausse piste...

      Je sais ! Je vais esseyer en prenant que les 2 premiers carracteres de chaques lignes pour voir.
      1. Salut,

        En executant test.sh

        total=0
        for line in $(cat monfichier); do
        total=$(echo "$line + $total" | bc)
        done
        
        echo $total;
        


        Avec pour fichier monfichier :
        1
        2
        3
        4
        5
        


        J'obtiens :

        [root@VMFedora spongebob]# ./test.sh
        15


        Ton ton script a l'air de parfaitement fonctionner chez moi..