[bash]Impossible de faire une simple addition
tontonbash
-
Zyclo Messages postés 214 Date d'inscription Statut Membre Dernière intervention -
Zyclo Messages postés 214 Date d'inscription Statut Membre Dernière intervention -
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.
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
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
A voir également:
- Bash addition
- Addition excel - Guide
- Bingo bash free - Télécharger - Divers Jeux
- Bash permission non accordée - Forum Shell
- Bash pause ✓ - Forum Shell
- Addition et soustraction dans la meme formule excel - Forum Excel
3 réponses
Salut,
En executant test.sh
Avec pour fichier monfichier :
J'obtiens :
Ton ton script a l'air de parfaitement fonctionner chez moi..
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..
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.
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.
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
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