Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/03/2008, à 14:50

bidulesfr

[réglé] bash: Erreur de division

Salut,

Je cherche à faire un petit script en bash. L'idée est assez simple. Récupérer un nombre d'une page html, puis faire une petite opération sur ce nombre.

TDP= grep tdp < test.htm | awk -F "<td>tdp" '{print $2}' | awk -F "</td>" '{print $1}'
echo $(($TDP/4))

Ce qui me renvoi comme erreur:
./test.sh: line 12: /4: erreur de syntaxe : opérande attendu (error token is "/4")
(La ligne 12 correspond à la 2ème ligne du code ci-dessus, j'ai simplifié pour être plus clair)

Par expérience, ça me laisse plutôt penser à une erreur de type de variable. Genre division avec une chaine. Mais il me semble pourtant bien quand bash, les variables ne sont pas typé, donc je m'attendrai plus à avoir au pire un nombre aberrant plutôt qu'une erreur.
Bref, je ne sais pas trop par quel coté le prendre ce petit !

A+

Dernière modification par bidulesfr (Le 23/03/2008, à 15:26)

Hors ligne

#2 Le 23/03/2008, à 15:05

best_friend_fr

Re : [réglé] bash: Erreur de division

salut

fais un echo $TDP sur la lige d´avant pour verifier le contenu


sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr

Hors ligne

#3 Le 23/03/2008, à 15:11

Saito

Re : [réglé] bash: Erreur de division

bidulesfr a écrit :
TDP= grep tdp < test.htm | awk -F "<td>tdp" '{print $2}' | awk -F "</td>" '{print $1}'
echo $(($TDP/4))

Ce qui me renvoi comme erreur:
./test.sh: line 12: /4: erreur de syntaxe : opérande attendu (error token is "/4")

Oui, il y a une erreur, tu déclares TDP comme étant une chaîne vide ( TDP= ) puis tu éxecutes ta commande (grep ...), du coup «echo $(($TDP/4))» se développe en «echo $(( /4 ))» d'où l'erreur.
Ton assignation doit ressembler à ça:

TDP=$(grep tdp test.htm | awk -F "<td>tdp" '{print $2}' | awk -F "</td>" '{print $1}')

sans espaces, et avec $() qui te permet de récupérer la sortie de ta commande (cf. man bash, Command Substitution)


Aku-Soku-Zan_Shinsengumi

Hors ligne

#4 Le 23/03/2008, à 15:25

bidulesfr

Re : [réglé] bash: Erreur de division

Ah ba moi qui n'avait jamais trop comprit l'utilité de $(), cette fois, je crois que c'est fait !

Merci bien smile

Hors ligne