LINUX - Script Bash

LINUX - Script Bash - Divers - Programmation

Marsh Posté le 13-06-2011 à 23:46:41    

 Bonjour,
 
  je ne sais pas trop où va mon problème.
  Je me casse la tête sur un truc qui semble pourtant extrêmement évident.
 
  J'ai créé le script bash suivant qui permet de chager ma MBR. (en bref, il sauvegarde sous le nom de 2011-06-14 puis restaure la 1-XP 3-Extend.mbr)
 

Code :
  1. #!/bin/bash
  2. echo bonjour
  3. mkdir /mnt/sdb1
  4. mount /dev/sdb1  /mnt/sdb1
  5. dd if=/dev/sda of=/mnt/sdb1/2011-06-14.mbr bs=512 count=1
  6. dd if=/mnt/sdb1/1-XP\ 3-Extend.mbr  of=/dev/sda bs=512


 
Ce qui m'impressionne, c'est que quand je tape ce script ligne dans une console après ligne, il n' a aucun problème.
 
Mais lorsque je lance le script, il écrit exactement ceci :

Code :
  1. bonjour
  2. dd : unrecognized operand 'r'
  3. Try 'dd --help' for more information.
  4. dd : unrecognized operand 'r'
  5. Try 'dd --help' for more information.


 
C'est quand même dingue ! Si il écrit "bonjour", ça veut dire que mon script est bien executé. Lorsque je tape "dd if=/dev/sda of=/mnt/sdb1/2011-06-14.mbr bs=512 count=1" dans une console normale, tout fonctionne très bien, alors pourquoi pas mon script ?
 
Au secours ! Je veux comprendre !

Reply

Marsh Posté le 13-06-2011 à 23:46:41   

Reply

Marsh Posté le 14-06-2011 à 10:08:29    

Lors de tes deux manip, tu utilises bien le même compte ?

Reply

Marsh Posté le 14-06-2011 à 10:53:32    

Si tu essayes de mettre des guillemets autour des chemins ?

Reply

Marsh Posté le 14-06-2011 à 17:46:07    

 Merci pour vos réponses.
  Je réponds dans l'ordre.

 

 J'utilise une live usb de puppy-linux (plus exactement toutou linux car je trouve que c'est la live usb la plus rapide à démarrer vu que j'ai uniquement besoin de la console et de la gestion du DD SATA, mais si vous connaissez plus rapide, je suis interessé). J'ouvre tout simplement la console, pas de demande de nom d'utilisateur linux. Le problème peut-il venir de là ?

 

 
   J'ai réecrit comme ceci avec des guillemets :

Code :
  1. #!/bin/bash
  2. echo bonjour
  3. mkdir /mnt/sdb1
  4. mount /dev/sdb1  /mnt/sdb1
  5. dd if="/mnt/sdb1/1XP3Extend.mbr"  of="/dev/sda" bs=512  #Remarque : le fichier 1-XP 3-Extend.mbr a été renommé en 1XP3Extend.mbr
 

Lorsque je lance le script, il écrit :

Code :
  1. bonjour
  2. dd : unrecognized operand 'r'
  3. Try 'dd --help' for more information.
 

j'hallucine...


Message édité par abaloval le 14-06-2011 à 17:53:04
Reply

Marsh Posté le 17-07-2011 à 15:00:00    

up (je sais, ça fait un mois  :ange: , mais là, je me recasse la tête sur mon script... si quelqu'un avait une petite explication...)

 

Comment est-il possible qu'un script ne donne fasse pas la même chose que lorsqu'on tape directement le code dans une console ???

Message cité 1 fois
Message édité par abaloval le 17-07-2011 à 15:00:55
Reply

Marsh Posté le 18-07-2011 à 12:06:36    

Tu n'aurais pas un caractère à la con dans ton script ?
Postes ici le retour de cette commande "bash -x nomDuScript".

Reply

Marsh Posté le 18-07-2011 à 12:13:25    

abaloval a écrit :

up (je sais, ça fait un mois  :ange: , mais là, je me recasse la tête sur mon script... si quelqu'un avait une petite explication...)
 
Comment est-il possible qu'un script ne donne fasse pas la même chose que lorsqu'on tape directement le code dans une console ???


 
Ton script est exécuté par bash.
Ta console peut utiliser autre chose (zsh, csh) et avoir un autre environnement (par exemple dd peut être un alias)


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 18-07-2011 à 16:41:52    

roondar a écrit :

Tu n'aurais pas un caractère à la con dans ton script ?
Postes ici le retour de cette commande "bash -x nomDuScript".


 
Effectivement, certains interpréteurs supportent mal les mauvais caractères de fin de ligne ( par exemple si le script a été écrit sous windows ).
 
sous windows, fin de ligne : 0x0D/0x0A ,  sous linux , 0x0A uniquement.
 
 
C'est peut être une piste.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed