besoin d'aide pour mon script de sauvegarde svp

besoin d'aide pour mon script de sauvegarde svp - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 02-01-2006 à 08:01:52    

bonjour tout le monde
 
voici mon script :

Code :
  1. #!/bin/csh
  2. if ($#argv < 2 || $#argv > 3) then
  3.     echo "erreur de syntaxe de la commande sauve"
  4. else
  5. @ i = $#argv - 1
  6. set dst = $argv[$#argv]
  7.     if (-d $dst) then
  8. foreach src (`ls $argv[$i]`)
  9.     if ($argv[1] == '-i' && -e "$dst/$src" ) then
  10.  echo " le fichier $src doit-il etre ecrase (O/n) ? "
  11.  set reponse = $<
  12.      if($reponse == 'o' || $reponse == 'O') then
  13.   cp $src $dst
  14.        endif
  15.     else
  16.  cp $src $dst
  17.     endif
  18. end
  19.     else
  20. echo  $argv[$#argv] "n'existe pas ou n'est pas un repertoire"
  21.     endif
  22. endif


 
 le probleme c'est quand je tape ca :
 csh sauve *.txt testDST/
 
ben il y a qu'un seul fichier .txt qui est copier dans testDST/ alors qu'il devrait y en avoir 2 et aucune erreur ne met retourné
 
en fait j'ai mis un mouchard dans mon foreach et je m'apercoi qu'il m'affiche qu'un seul fichier .txt et non 2 et le truc est de savoir pourquoi il m'en affiche qu'un seul et comment corriger ce problème :/
 
j'ai vraimment besoin de votre aide là j'en ai marre j'ai même pas encore dormi :/


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 02-01-2006 à 08:01:52   

Reply

Marsh Posté le 02-01-2006 à 10:29:01    

A mon avis c'est a cause de ta gestion de la longueur des arguments.

Reply

Marsh Posté le 02-01-2006 à 14:20:40    

[:atlantis]


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 02-01-2006 à 14:23:21    

parce que "*.txt" est remplacé par "fichier1.txt fichier2.txt fichier3.txt" AVANT que ce ne soit envoyé au script ?
 
(ça a une syntaxe bizzare le csh :o)


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 02-01-2006 à 14:24:27    

Voila, c'est ca que je voulais dire, mais en utilisant moins de mots :D

Reply

Marsh Posté le 02-01-2006 à 14:34:35    

hmm mais comment résoudre ca ? car le truc c'est que je ne veux pas avoir a saisir les " "


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 02-01-2006 à 14:36:23    

Ben ne controle pas la taille au-dessus a trois, considere que le dernier argument est la destination, et le reste les fichiers.

Reply

Marsh Posté le 02-01-2006 à 14:40:38    

voila :o
 
y'a le "shift" en csh ?


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 02-01-2006 à 14:42:13    

ca fonctionne toujours pas j'ai essayé :s


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 02-01-2006 à 15:11:44    

j'ai trouvééééééééééééééé :)
 
voici le code qui fonctionne nickel :) merci ;)
 

Code :
  1. #!/bin/csh
  2. if ($#argv < 2) then
  3.     echo "erreur de syntaxe de la commande sauve"
  4. else
  5. set dst = $argv[$#argv]
  6.     if (-d $dst) then
  7. foreach src ($argv)
  8.   if(-f $src) then
  9.     if ($argv[1] == '-i' && -e "$dst/$src" ) then
  10.  echo " le fichier $src doit-il etre ecrase (O/n) ? "
  11.  set reponse = $<
  12.      if($reponse == 'o' || $reponse == 'O') then
  13.   cp $src $dst
  14.        endif
  15.     else
  16.  cp $src $dst
  17.     endif
  18.   endif
  19. end
  20.     else
  21. echo  $argv[$#argv] "n'existe pas ou n'est pas un repertoire"
  22.     endif
  23. endif


Message édité par blastman le 02-01-2006 à 15:27:24

---------------
http://www.blastmanu.info
Reply

Sujets relatifs:

Leave a Replay

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