Messages d'eereurs en shell

Fermé
Shargat - 30 janv. 2008 à 16:03
 Shargat - 31 janv. 2008 à 15:12
Bnjour

Voilà, j'ai réalisé un script .sh en shell donc.
Lorsque je lance ma commande, j'obtiens un deux messages d'erreurs sur deux lignes différentes:

./dm.sh : line 60 unexpected EOF while looking for matching ``,
./dm.sh : line 70 : syntax error : unexpected end of file

Ma ligne 60 correspond à ceci:


echo "`head -$i ficIntermediaire | tail -i ficIntermediaire | cut -1,2,3 -d ";"` $quantiteTotale $montant"


et la ligne 72 n'est que la fin de mon script qui se termine par
exit 0.

J'ai du mal à décrypter les erreurs concernée, alors si qqn peut m'aideR.
Merci d'avance.

26 réponses

L'algo est dans les commentaires. Dans un éditeur qui colore les lignes c'est lisible.
EN effet j'ai changé la lecture d'un élément du tableau.

Le message d'erreur reste : unary operator expected

Pourtant j'ai essayé d'initialiser la première case du tableau.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
31 janv. 2008 à 14:36
L'algo est dans les commentaires
Oui ça j'avais vu, mais comme c'est pas très clair pour moi...

Reprends chaque ligne de commentaire et en regard mets ce que tu veux (voudrais) obtenir (en extrapolant le résultat des variables en fonction de celles sont sensées contenir) s'il te plaît, merci ;-)
0
DEBUT
#création du fichier ventesdate_du_jour.txt

#écriture des deux premières lignes dans le fichier
afficher("blablabla")
afficher("blablabla")

#initialisation des vraiables
k <--0
j <--0
i <-- 0
montantTotal <--0
tableau <-- 0

tant que (i <= nbLignes du fichier ventesJour.txt)
faire
reference <-- (la reference du produyit de la ligne i)
#verification que referejnce n'a pas deja ete traitee
tant que ((tableau[j] != reference) OU ( j < k )
faire
j++
ftq

#si j=tailleTableau alors reference pas trouvee et on la traite
si ( j = k ) alors
traitement des montants et quantites
fsi

#on passe a la ligne suivante
i++
ftq

FIN
0
Arg l'indentation est pas passée
0
Mais il semblerait que l'erreur se trouve sur le test du second while :

while [ $tableau[$j] -ne $reference ] || [ $j -lt $k ]
	do
		let j=$j+1
	done
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PLutot

while [ ${tableau[$j]} -ne $reference ] || [ $j -lt $k ]
do
let j=$j+1
done
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 janv. 2008 à 20:07
Salut,

Déjà il y a une erreur dans : nbLigneTotal=`wc -l ventesJour.txt`
La sortie de cette commande ne renvoie pas un nombre seul, mais un nombre suivi du nom du fichier, donc forcément le test qui s'en suit foire ;-((

Mieux vaut utiliser la syntaxe : cat ventesJour.txt | wc -l

Autre chose, mieux vaut privilégier la syntaxe $(commande) plutôt que l'emploi des quotes inversées `commande`...
donc :
nbLigneTotal=$(cat ventesJour.txt | wc -l)
et dans le même esprit :
date_du_jour=$(date +"%D)

Il y a aussi une erreur dans le test suivant : while [ i -le nbLigneTotal ]
Il manque le signe "$" à ta variable "while [ i -le $nbLigneTotal ]"

Change ça déjà et puis on verra...

-1
Darkito Messages postés 1191 Date d'inscription vendredi 7 décembre 2007 Statut Membre Dernière intervention 26 mai 2010 545
30 janv. 2008 à 21:47
Et jipicy arriva !
Je ne suis qu'un jeune padawan en shell à coté de toi !
Tu m'avais pas mal dépanné il y a quelques mois.
=o)
--
Tøƒ
0