Problem csh

Bonjour,
j'ai écrit un script csh qui gère comment copier un fichier . lorsque j exécute ce scripte il me demande d'entrée le fichier source puis le fichier cible et puis lorsque je entre ces donné etttt la le problème ERREUR :illégal variable
voila le code source de min scripte:

#!/bin/csh 
echo " ------------------------------------------------------"; 
echo " le dossier dans le quel vous vous trouvez contient :"; 
echo " "; 
ls ; 
echo " "; 
echo -n "quel fichier voulez-vous copier ? : "; 
set src=$< ; 
if ( -f $src ) then 
echo -n "quel est le nom du fichier cible ? : "; 
set cbl=$< ; 
set nom_fichier_src=""; 
set nom_fichier_cbl=""; 
nom_fichier_src=$(readlink -f $src); 
nom_fichier_cbl=$(readlink -f $cbl); 
if ( $nom_fichier_src == $nom_fichier_cbl ) &>ff then 
echo "*********************************"; 
echo "ERREUR : même fichier à copier !"; 
else 
set chemin=""; 
set taille=$(echo $cbl | awk 'BEGIN{FS="/"} {print NF}'); 
if ( $taille == 1 ) then 
chemin=""; 
else 
chemin=$(echo $cbl | awk 'BEGIN{FS="/"} {print $1}'); 
set i=2; 
while ( i<taille ) 
set elem=$(echo $cbl | awk 'BEGIN{FS="/"} {print $('$i')}'); 
chemin=$chemin/$elem; 
@i=i+1; 
end 
chemin=$chemin/; 
endif 
set nom_fichier=$(echo $cbl | awk -F "/" '{printf $NF}' ); 
set extension_fichier=$(echo $nom_fichier | awk -F "." '{printf $NF}'); 
nom_fichier=$(echo $nom_fichier | cut -d"." -f1); 
if ( $extension_fichier == $nom_fichier ) then 
extension_fichier=""; 
endif 
if ( -e $chemin ) then 
if ( -f $cbl ) then 
set hh='date +"%H"'; # heure 
set mm='date +"%M"'; # minute 
set ss='date +"%S"'; # seconde 
set MM='date +"%b"'; # mois 
set JJ='date +"%a"'; 
set tiret_bas=_; 
if ( -z ${extension_fichier} ) then 
set nouv_nom=$(echo $chemin$nom_fichier$MM$JJ$tiret_bas$hh$mm$ss); 
else 
nouv_nom=$(echo $chemin$nom_fichier$MM$JJ$tiret_bas$hh$mm$ss.$extension_fichier); 
endif 
cp $src $nouv_nom ; 
else 
cp $src $cbl ; 
endif 
else 
echo "****************************"; 
echo "ERREUR :chemin innexistant !"; 
echo "****************************"; 
endif 
endif 
else 
echo "*********************************"; 
echo "ERREUR :ce fichier n'esiste pas !"; 
echo "*********************************"; 
endif 
rm ff;


3 réponses

  1. salut,

    au moins, tu as lu ça ?
    1. merci pr ta reponse j lis j cahngé mais tjjjr meme problllem peut etre je suis pas fort en anglai et domage je suis obligé d'utiliser le csh
  2. je suis pas fort en anglai
    en français, non plus :(

    tu assignes des variables sans
    set
    ;
    et, bonus, le développement de commandes se fait entre backticks, et non entre
    $( )
    1. mrc bcp de ta reponse c reglé mais j trouver autre problem dans la ligne num 16
      if ( $nom_fichier_src == $nom_fichier_cbl ) &>ff then
      lerreur est :
      if:empty if
      then:commande not found
    2. j'attend ta reponse
    3. if ( "$var" == "$otVar" )
      then
      echo "ok"
      else
      echo "ko"
      endif
      qu'est censé faire
      &>ff
      ?
      si c'est pour masquer d'éventuels messages d'erreurs, il faut pas !
      il faut parer aux erreurs qui pourraient survenir.

      mets tes variables entre guillemets.
      csh
      est pointilleux sur les passages à la ligne.

      j'attend ta reponse
      ouais ? beh, tu peux faire des tests en console, lire le
      man
      ...
    4. & pour exécuter la commande en arriere plan
      >ff pour mettre le resultas de la commande dans un fichier qui s'apelle ff
    5. exécuter la commande en arriere plan
      quelle commande ? le test ?
      quel intérêt ?
      &
      s'applique à la commande qu'il précède.