probleme exercice de prog en csh

probleme exercice de prog en csh - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 09-01-2006 à 14:41:22    

Bonjour, dans le cadre d'un cours de systeme en DUT info premiere année on a un probleme a résoudre, voici en gros l'énoncé :
 
Ecrire une commande menage [-d <répertoire> ] [-a] qui détruit tous les fichiers de nom core a.out, finis par .bak ou de taille nulle. Les options de la commande , de 0 a 2 peuvent apparaitre dans n'importe quel ordre :
- -d <rép>: la recherche se fait à ârtor de ce rep ou du HOME par défaut
- -a : entraine l'affichage par un listing long avant supression
 
La commande doit tester le nombre et le type de ses arguments. Comme on ne sait ni leur nombre ni leur ordre, on fera une boucle sur les arguments, contenant un switch vers les différentes valeurs que l'on peut trouver et une erreur si on ne reconnait pas la valeur. Attention ! -d sera compté comme un argument et <répértoire> comme un autre argument (car ce sont les espaces qui délimitent les arguments d'une commande).
 
On a fait l'exo mais il nous sort une vieille erreur du style tiret manquant, mais on voit pas ou, apparement l'erreur vient du switch, quelqu'un aurait une idée car ça fait un long moment qu'on cherche et on trouve pas.
 
#! /bin/csh
@ d = 0
@ a = 0
if( $#argv < 3 ) then  
  echo "erreur"
else
   foreach i ($argv)
      @ j = 1
      echo $i
      switch ( $i )  
           case "-d" :
         if ( -d $argv[$j+1] ) then
      @ d = 1
      else echo ' Erreur le rep indique n est pas au bon endroit ou n'est pas present '
  endif
  @ j ++
  breaksw
    case '-a' :
  if ( ! ( -d $argv[$j+1] ) ) then
      @ a = 1
  endif
  @ j ++
  breaksw
    default :
                @ j ++
      endsw
       
  end
  if ( $d==0 || $a==0 ) then
 echo 'erreur bla bla d ou a a 0'
        else
     find ~ \( -name "*.bak" -o -name "a.out" -o -name "core.*" -o -size 0 \) -exec ls -l {} -exec rm {} \;
  endif
endif

Reply

Marsh Posté le 09-01-2006 à 14:41:22   

Reply

Marsh Posté le 09-01-2006 à 18:25:40    

met ton code dans une balise [cpp] :)
Et donne la ligne d'érreur précise, ça aidera :D

Reply

Sujets relatifs:

Leave a Replay

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