Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2049 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Noobshell : c'est quoi mon erreur?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Noobshell : c'est quoi mon erreur?

n°2229816
Thaybow7
Posté le 02-06-2014 à 22:38:47  profilanswer
 

Bon,
 
J'aurais besoin de vos lumières car je me casse la tête sur un script sans savoir quelle est mon problème,...faut dire je débute le shell depuis deux jours.
 

Code :
  1. #!/bin/bash
  2. echo "Entrez le nom du premier fichier : "
  3. read fichier1
  4. if  [ ! -f $fichier1 ] ; then
  5. echo "Le fichier1 n'existe pas"
  6. exit
  7. fi
  8. echo "Entree le nom du second fichier : "
  9. read fichier2
  10. if [ ! -f $fichier2 ] ; then
  11. echo "Le fichier1 n'existe pas"
  12. exit
  13. test1=$(md5 fichier1)
  14. test2=$(md5 fichier2)
  15. if [ $test1 -eq $test2 ] ; then
  16. echo "Le md5sum à la même valeur"
  17. echo "Le checksum est : "
  18. md5 fichier1
  19. elif [ $test1 -gt $test2 ] ; then
  20. echo "Le md5sum du fichier 1 est plus grand que celui du fichier 2"
  21. md5 fichier1 fichier2
  22. else
  23. echo "Le md5sum du fichier 2 est plus grand que celui du fichier 1"
  24. md5 fichier2 fichier1
  25. fi


 
Je sais entrer le nom du premier fichier puis après probleme de synatxe à la ligne 19 avec le elif...
Mais je vois pas pq  :??:  
Merci pour votre aide.

mood
Publicité
Posté le 02-06-2014 à 22:38:47  profilanswer
 

n°2229820
dreameddea​th
Posté le 02-06-2014 à 23:11:54  profilanswer
 

Il manque juste un fi entre la ligne 12 et la ligne 13 non ?

n°2229823
Thaybow7
Posté le 02-06-2014 à 23:33:09  profilanswer
 

Ah oui déjà tiens :)

n°2229826
Soileh
Lurkeur professionnel
Posté le 03-06-2014 à 00:08:45  profilanswer
 

:hello:  !

 
  • Lignes 13 et 14, il te manque aussi les $ pour tes variables $fichier1 et $fichier2
  • Ligne 11, c'est "fichier2" et non "fichier1" [:cupra]
  • Sinon, l'erreur est déclenchée à mon avis par ma première remarque : vu que les signes $ sont omis, il n'arrive pas à calculer le md5, ce qui fait que les variables $test1 et $test2 ne sont pas initialisées. Tu devrais à mon avis ajouter des doubles quotes à chacun des tests pour éviter ce type d'erreur.


:jap:

 

Edit : d'ailleurs, ça te donne pas une erreur à la ligne 15 avec le if ? :??:


Message édité par Soileh le 03-06-2014 à 00:10:20

---------------
And in the end, the love you take is equal to the love you make
n°2230189
Thaybow7
Posté le 07-06-2014 à 11:52:26  profilanswer
 

Je corrige, je teste et j'avise :jap:  
Merci beaucoup!

n°2230190
Thaybow7
Posté le 07-06-2014 à 12:20:36  profilanswer
 

Non toujours pas :pt1cable:  
Pour ceci if  [ ! -f $fichier1 ]
je devrais faire if  [ "! -f $fichier1" ]? Je ne vois pas bien ou placer ces doubles quotes j'avoue

n°2230192
Thaybow7
Posté le 07-06-2014 à 12:27:57  profilanswer
 

Identifiant non valable ligne 3
Ligne 20 erreur de syntaxe pres du elif

Message cité 1 fois
Message édité par Thaybow7 le 07-06-2014 à 12:28:25
n°2230203
Soileh
Lurkeur professionnel
Posté le 08-06-2014 à 11:22:11  profilanswer
 

Thaybow7 a écrit :

Non toujours pas :pt1cable:  
Pour ceci if  [ ! -f $fichier1 ]
je devrais faire if  [ "! -f $fichier1" ]? Je ne vois pas bien ou placer ces doubles quotes j'avoue


Pour les quotes, il faut faire ceci :

Code :
  1. if [ "$test1" -eq "$test2" ]


Cela te permet de protéger le contenu de ta variable, et d'éviter les erreurs si celles-ci n'est pas valorisées :jap:
Par contre, dans ce cas d'un test sur égalité, tu dois aussi tester que la valeur n'est pas nulle [:cupra]


---------------
And in the end, the love you take is equal to the love you make
n°2230207
Soileh
Lurkeur professionnel
Posté le 08-06-2014 à 11:57:44  profilanswer
 

Thaybow7 a écrit :

Identifiant non valable ligne 3
Ligne 20 erreur de syntaxe pres du elif


Ta ligne 3 c'est bien cette ligne ? :??:

Code :
  1. read fichier1


Parce qu'elle est correcte normalement :??:
Et même ta ligne 20 avec le elif est correcte :/


---------------
And in the end, the love you take is equal to the love you make
n°2230252
Thaybow7
Posté le 09-06-2014 à 12:43:27  profilanswer
 

Ben ouais, j'ai débuggé et j'en suis revenu au début du script avec la conclusion que la commande read chez moi à un souci.  
J'ai remarqué ça pour les autres scripts que j'ai écrit.  
 
Je comprends vraiment pas le problème.  
 
Je suis sous vmware...ça peut être la source du problème?
J'ai perdu une semaine à me prendre la tête et maintenant je suis bien à la bourre :cry:

mood
Publicité
Posté le 09-06-2014 à 12:43:27  profilanswer
 

n°2230253
Soileh
Lurkeur professionnel
Posté le 09-06-2014 à 13:11:28  profilanswer
 

Thaybow7 a écrit :

Ben ouais, j'ai débuggé et j'en suis revenu au début du script avec la conclusion que la commande read chez moi à un souci.
J'ai remarqué ça pour les autres scripts que j'ai écrit.

 

Je comprends vraiment pas le problème.

 

Je suis sous vmware...ça peut être la source du problème?
J'ai perdu une semaine à me prendre la tête et maintenant je suis bien à la bourre :cry:


Tu utilises VMWare ? Ça veut donc dire que tu émules un Linux non ? :??: Il n'y aurait pas un problème de copier-coller quelquefois entre un Windows et un Linux ? :??: Je pense surtout au niveau des sauts de lignes par exemple : j'ai écrit des scripts sous Windows que j'exécutais sous Cygwin, et je me suis rendu compte que je devais faire attention à ce détail [:cupra]

 

Edit : pour mettre en évidence ceci, fais un "cat -v" de ton script pour voir si tu n'as pas de caractères parasites ;)

Message cité 1 fois
Message édité par Soileh le 09-06-2014 à 13:12:54

---------------
And in the end, the love you take is equal to the love you make
n°2230256
Tuxerman12
Posté le 09-06-2014 à 13:29:16  profilanswer
 

Pour voir ce qu'il fait et jusqu'où il va:
 

Code :
  1. bash -xv tonscript.sh

n°2230257
Tuxerman12
Posté le 09-06-2014 à 13:31:46  profilanswer
 

Soileh a écrit :


Tu utilises VMWare ? Ça veut donc dire que tu émules un Linux non ? :??: Il n'y aurait pas un problème de copier-coller quelquefois entre un Windows et un Linux ? :??: Je pense surtout au niveau des sauts de lignes par exemple : j'ai écrit des scripts sous Windows que j'exécutais sous Cygwin, et je me suis rendu compte que je devais faire attention à ce détail [:cupra]
 
Edit : pour mettre en évidence ceci, fais un "cat -v" de ton script pour voir si tu n'as pas de caractères parasites ;)


 
Aussi, s'il fait des copier/coller d'un script pris sur internet ou dans un .doc sous windows, ça a probablement inséré des sauts de ligne windows.

n°2230268
Thaybow7
Posté le 09-06-2014 à 14:21:52  profilanswer
 

Pourtant je fais tout sous notepad++ en shell
Mais même le script le plus simple genre  
 
#!/bin/bash
echo "entrez le nom : "
read nom
echo $nom
 
probleme au niveau du read...

n°2230271
Thaybow7
Posté le 09-06-2014 à 14:27:27  profilanswer
 

http://s22.postimg.org/lb5ffdxkd/linuxread.jpg
^M c'est le retour linux?

n°2230275
Tuxerman12
Posté le 09-06-2014 à 14:36:21  profilanswer
 

Non, Microsoft  :D

n°2230277
Soileh
Lurkeur professionnel
Posté le 09-06-2014 à 14:40:53  profilanswer
 


Comme le dit tuxerman12, c'est un saut de ligne Windows ^_^
Sous Linux, si tu as la commande dos2unix, tu peux l'utiliser pour convertir ton script au format Linux ;)

 

Edit : ou sous un editeur comme vi, tu peux saisir la commande : 1,$s/^M//g


Message édité par Soileh le 09-06-2014 à 14:42:07

---------------
And in the end, the love you take is equal to the love you make

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Noobshell : c'est quoi mon erreur?

 

Sujets relatifs
Erreur code vhdlErreur d'execution '13' Incompatibilité de type
Erreur install SQL 2008 R2erreur javascript 55 dans indesign cs6
Problème : Type incompatible (erreur 13)erreur
Erreur d'excécution '9' : L'indice n'apparait pas à la selection.[GNUPLOT] Supprimer les sorties d'erreur du terminal [Résolu]
érreur sur childNodesErreur AJAX/JS
Plus de sujets relatifs à : Noobshell : c'est quoi mon erreur?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR