Problem csh

medalaa Messages postés 8 Statut Membre -  
 Utilisateur anonyme -
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. medalaa Messages postés 8 Statut Membre
     
    et merci d'avance
    0
  2. Utilisateur anonyme
     
    salut,

    au moins, tu as lu ça ?
    0
    1. medalaa Messages postés 8 Statut Membre
       
      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
      0
  3. Utilisateur anonyme
     
    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
    $( )
    0
    1. medalaa Messages postés 8 Statut Membre
       
      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
      0
    2. medalaa Messages postés 8 Statut Membre
       
      j'attend ta reponse
      0
    3. Utilisateur anonyme
       
      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
      ...
      0
    4. medalaa
       
      & pour exécuter la commande en arriere plan
      >ff pour mettre le resultas de la commande dans un fichier qui s'apelle ff
      0
    5. Utilisateur anonyme
       
      exécuter la commande en arriere plan
      quelle commande ? le test ?
      quel intérêt ?
      &
      s'applique à la commande qu'il précède.
      0