Messages d'eereurs en shell
Shargat
-
Shargat -
Shargat -
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.
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.
A voir également:
- Messages d'eereurs en shell
- Classic shell - Télécharger - Personnalisation
- Comment savoir si quelqu'un lit mes messages sur whatsapp - Accueil - Messagerie instantanée
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Google messages - Accueil - Messagerie instantanée
- Messages supprimés whatsapp - Guide
26 réponses
Bonjour,
il manque un $ dans le tail ?
et pourquoi spécifie un fichier dans le tail ?, il prends ce que lui donne le pipe en entrée non ?
--
Tøƒ
il manque un $ dans le tail ?
et pourquoi spécifie un fichier dans le tail ?, il prends ce que lui donne le pipe en entrée non ?
--
Tøƒ
Ah oui exact merci.
J'ai corrigé et j'obtiens toujours la même phrase d'erreur.
Mon code est celui-ci:
echo `head -$i ficIntermediaire | tail -$i |cut -1,2,3 -d ";"` $quantiteTotale $montant
Sinon pour la fin de fichier, faut-il finir un script shell par une instruction spéciale autre que exit 0 ?
J'ai corrigé et j'obtiens toujours la même phrase d'erreur.
Mon code est celui-ci:
echo `head -$i ficIntermediaire | tail -$i |cut -1,2,3 -d ";"` $quantiteTotale $montant
Sinon pour la fin de fichier, faut-il finir un script shell par une instruction spéciale autre que exit 0 ?
une autre remarque, pourquoi tu fais tail -$i ?
je suppose qu'en fait, tu veux récupérer la ièeme ligne, donc c'ets un tail -1 qu'il faut faire.
Ton problème vient peut-être également de là car ta commande renvoie plusieur lignes
--
Tøƒ
je suppose qu'en fait, tu veux récupérer la ièeme ligne, donc c'ets un tail -1 qu'il faut faire.
Ton problème vient peut-être également de là car ta commande renvoie plusieur lignes
--
Tøƒ
Je pense que l'erreur vient d'autre part mais je voudrais savoir quelle type d'erreur provoque ce message d'erreur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
EN fait ce i est l'indice d'une boucle for.
Le but de cette commande est d'extraire les champs 1, 2, 3 de la ième ligne d'un fichier.
Donc à chaque tour de boucle le i est différent. Mais à chaque fois le résultat n'est qu'une ligne non?
Le but de cette commande est d'extraire les champs 1, 2, 3 de la ième ligne d'un fichier.
Donc à chaque tour de boucle le i est différent. Mais à chaque fois le résultat n'est qu'une ligne non?
As-tu tester ta ligne head -$i ficIntermediaire | tail -$i |cut -1,2,3 -d ";" dans un xterm ?
en remplacant le i par 1?
je l'ai fait vite fait, et je pense que tu as oublier le -f devant -1 dans le cut
--
Tøƒ
en remplacant le i par 1?
je l'ai fait vite fait, et je pense que tu as oublier le -f devant -1 dans le cut
--
Tøƒ
Oui je viens de m'en apercevoir en effectuant ce test.
Après correction, la commande fonctionne et le message d'erreur reste toujours le même lorsque j'exécute le script.
Après correction, la commande fonctionne et le message d'erreur reste toujours le même lorsque j'exécute le script.
J'ai écrit un script il n'y pas longtemps qui utilise exactement cette fonction
je recherche ca et je te tiens au courant.
--
Tøƒ
je recherche ca et je te tiens au courant.
--
Tøƒ
Je ne vois pas trop d edifférence avec le mien...
Que se passe t'il si tu mets juste head -$i ficIntermediaire | tail -$i |cut -1,2,3 -d ";" dans ton script, avant le echo par exemple ?
--
Tøƒ
Que se passe t'il si tu mets juste head -$i ficIntermediaire | tail -$i |cut -1,2,3 -d ";" dans ton script, avant le echo par exemple ?
--
Tøƒ
Bon voilà j'ai réécrit un script tout propre. Le message d'erreur reste le même.
IL s'agirait d'un oubli de fermeture de `, de " ou d'autre chose.
Je me permets de poster le script entier, si quelqu'un voulait bien le tester chez lui pour voir s'il a le même message d'erreur.
Merci d'avance.
Ce script fait le bilan des ventes de tous les produits d'un magasin.
IL s'agirait d'un oubli de fermeture de `, de " ou d'autre chose.
Je me permets de poster le script entier, si quelqu'un voulait bien le tester chez lui pour voir s'il a le même message d'erreur.
Merci d'avance.
Ce script fait le bilan des ventes de tous les produits d'un magasin.
#! /bin/sh #création de la variable qui contiendra la date courante date_du_jour=`date +"%D` #création du fichier ventesdate_du_jour.txt touch ventes$date_du_jour.txt #écriture des deux premières lignes dans le fichier echo "Etat des ventes du $date_du_jour" >>ventes$date_du_jour.txt echo "Reference NomProduit Prix Quantite Montant" >>ventes$date_du_jour k=0 j=0 tailleTableau=0 #pour i de a nbligneTotal nbLigneTotal=`wc -l ventesJour.txt` while [ i -le nbLigneTotal ] do #regouper ds chaque variable les noms prix reference=`head -$i ventesJour.txt | cut -f1 -d ";"` #verifier reference pas deja prise #tant que pas trouve dans tableau faire while [ tableau[j] -ne $reference ] || [ $j -lt tailleTableau ] do let j=$j+1 done #si j=tailleTableau alors pas trouve et on traite if [ $g -eq $tailleTableau ] then nomProduit=`head -$i ventesJours.txt | cut -f2 -d ";"` prix=`head -$i ventesJour.txt | cut -f3 -d ";"` #regrouper lignes meme produit quantite=`grep $reference ventesJour.txt | wc -l` #calcul de montant let montant=$quantite*$prix tableau[k]=$reference let tailleTableau=$tailletableau+1 let montantTotal=$montantTotal+$montant #ecriture de la ligne echo $reference $nomProduit $prix $quantite $montant fi #sinon alors trouve donc on fait rien let i=$i+1 done #écrire Montant total des ventes du jour : $montantTotal echo "Montant total des ventes du jour :" $montantTotal exit 0
personne ? C'est surement une erreur toute bête de fermeture de balise mais j'ai beau tout relire je vois pas. Quelqu'un arrive à exécuter?
Merci d'avance
Merci d'avance
J'ai changé tout ça et même quelques autres trucs, toujours le même message d'erreur.
C'est la première fois que j'utilise les tableaux en shell peut-être les ai-je mal utilisés...
Le nouveau script:
C'est la première fois que j'utilise les tableaux en shell peut-être les ai-je mal utilisés...
Le nouveau script:
##!/bin/dm2 #création de la variable qui contiendra la date courante date_du_jour=`date +"%D` #création du fichier ventesdate_du_jour.txt touch ventes$date_du_jour.txt #écriture des deux premières lignes dans le fichier echo "Etat des ventes du $date_du_jour" >> ventes$date_du_jour.txt echo "Reference NomProduit Prix Quantite Montant" >> ventes$date_du_jour #initialisation des vraiables k=0 j=0 i=0 montantTotal=0 #pour i de 1 a nbligneTotal nbLigneTotal=`cat ventesJour.txt | wc -l` while [ $i -le $nbLigneTotal ] do #regouper dans chaque variable les noms prix reference=`head -$i ventesJour.txt | cut -f1 -d ";"` #verifier reference pas deja prise #tant que pas trouve dans tableau faire while [ $tableau[j] -ne $reference ] || [ $j -lt $k ] do let j=$j+1 done #si j=tailleTableau alors pas trouve et on traite if [ $j -eq $k ] then nomProduit=`head -$i ventesJours.txt | cut -f2 -d ";"` prix=`head -$i ventesJour.txt | cut -f3 -d ";"` #regrouper lignes meme produit quantite=`grep $reference ventesJour.txt | wc -l` #calcul de montant let montant=$quantite*$prix tableau[k]=$reference let k=$k+1 let montantTotal=$montantTotal+$montant #ecriture de la ligne echo $reference $nomProduit $prix $quantite $montant fi #sinon alors trouve donc on fait rien let i=$i+1 done #écrire Montant total des ventes du jour : $montantTotal echo "Montant total des ventes du jour : $montantTotal" exit 0
Attendez une seconde, un **** de guillemet était dans la création de la variable date_du_jour.
L'exécution m'affiche des messages d'erreurs plus explicites maintenant je vais les traiter et voir ce ça donne.
Je vous tiens au courant.
Merci.
L'exécution m'affiche des messages d'erreurs plus explicites maintenant je vais les traiter et voir ce ça donne.
Je vous tiens au courant.
Merci.
Bon voilà plus qu'une erreur qui je pense doit être lié à ma syntaxe sur l'utilisation du tableau.
Voici le message d'erreur:
./dm3.sh: line 28: [: [0]: unary operator expected
Peut-être que c'est parce que je n'ai pas initialisé la première case du tableau...
Quelqu'un a une idée?
Je remets le script en ciblant la ligne erreur:
Voici le message d'erreur:
./dm3.sh: line 28: [: [0]: unary operator expected
Peut-être que c'est parce que je n'ai pas initialisé la première case du tableau...
Quelqu'un a une idée?
Je remets le script en ciblant la ligne erreur:
#!/bin/dm2 #création de la variable qui contiendra la date courante date_du_jour=`date +%D` #création du fichier ventesdate_du_jour.txt touch ventes_de_ce_jour.txt #écriture des deux premières lignes dans le fichier echo "Etat des ventes du $date_du_jour" >> ventes_de_ce_jour.txt echo "Reference NomProduit Prix Quantite Montant" >> ventes_de_ce_jour.txt #initialisation des vraiables k=0 j=0 i=0 montantTotal=0 #pour i de 1 a nbligneTotal nbLigneTotal=`cat ventesJour.txt | wc -l` while [ $i -le $nbLigneTotal ] do #regouper dans chaque variable les noms prix reference=`head -$i ventesJour.txt | cut -f1 -d';'` #verifier reference pas deja prise #tant que pas trouve dans tableau faire while [ $tableau[$j] -ne $reference ] || [ $j -lt $k ] <------------------------ do let j=$j+1 done #si j=tailleTableau alors pas trouve et on traite if [ $j -eq $k ] then nomProduit=`head -$i ventesJour.txt | cut -f2 -d ";"` prix=`head -$i ventesJour.txt | cut -f3 -d';'` #regrouper lignes meme produit quantite=`grep $reference ventesJour.txt | wc -l` #calcul de montant let montant=$quantite*$prix tableau[$k]=$reference let k=$k+1 let montantTotal=$montantTotal+$montant #ecriture de la ligne echo "$reference $nomProduit $prix $quantite $montant" >> ventes_de_ce_jour.txt fi #sinon alors trouve donc on fait rien let i=$i+1 done #écrire Montant total des ventes du jour : $montantTotal echo "Montant total des ventes du jour : $montantTotal" >> ventes_de_ce_jour.txt exit 0
Bien sûr:
Ref;nomProduit;prix;qté
8447457;Lot 10 Chemises;7;5
8439991;Classeur levier;6;2
8402060;Perforateur;3;1
8404572;Gomme plastique;1;4
8419837;Ciseaux Soft;5;1
8445115;Papier 500 f.;7;2
8428563;Etiquettes A4;8;1
8453333;Cahier A4 96p.;4;5
8453334;Cahier A4 192p.;5;4
8404572;Gomme plastique;1;3
8456422;Roller bleu;2;5
8456423;Roller rouge;2;2
8441139;Surligneur vert;1;3
401797;Marqueur noir;1;1
8434996;Correcteur;1;6
8447457;Lot 10 Chemises;7;7
8439991;Classeur levier;6;2
8439991;Classeur levier;6;2
8402060;Perforateur;3;1
8453333;Cahier A4 96p.;4;10
8419837;Ciseaux Soft;5;10
8456422;Roller bleu;2;2
8456422;Roller bleu;2;3
8456423;Roller rouge;2;5
8434996;Correcteur;1;2
8447457;Lot 10 Chemises;7;5
8445115;Papier 500 f.;7;1
8453333;Cahier A4 96p.;4;6
8456422;Roller bleu;2;1
8434996;Correcteur;1;3
Ref;nomProduit;prix;qté
8447457;Lot 10 Chemises;7;5
8439991;Classeur levier;6;2
8402060;Perforateur;3;1
8404572;Gomme plastique;1;4
8419837;Ciseaux Soft;5;1
8445115;Papier 500 f.;7;2
8428563;Etiquettes A4;8;1
8453333;Cahier A4 96p.;4;5
8453334;Cahier A4 192p.;5;4
8404572;Gomme plastique;1;3
8456422;Roller bleu;2;5
8456423;Roller rouge;2;2
8441139;Surligneur vert;1;3
401797;Marqueur noir;1;1
8434996;Correcteur;1;6
8447457;Lot 10 Chemises;7;7
8439991;Classeur levier;6;2
8439991;Classeur levier;6;2
8402060;Perforateur;3;1
8453333;Cahier A4 96p.;4;10
8419837;Ciseaux Soft;5;10
8456422;Roller bleu;2;2
8456422;Roller bleu;2;3
8456423;Roller rouge;2;5
8434996;Correcteur;1;2
8447457;Lot 10 Chemises;7;5
8445115;Papier 500 f.;7;1
8453333;Cahier A4 96p.;4;6
8456422;Roller bleu;2;1
8434996;Correcteur;1;3