Problem csh

Fermé
medalaa Messages postés 6 Date d'inscription mercredi 25 décembre 2013 Statut Membre Dernière intervention 31 décembre 2013 - Modifié par jipicy le 25/12/2013 à 19:24
 Utilisateur anonyme - 29 déc. 2013 à 23:00
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

medalaa Messages postés 6 Date d'inscription mercredi 25 décembre 2013 Statut Membre Dernière intervention 31 décembre 2013
25 déc. 2013 à 16:21
et merci d'avance
0
Utilisateur anonyme
25 déc. 2013 à 19:41
salut,

au moins, tu as lu ça ?
0
medalaa Messages postés 6 Date d'inscription mercredi 25 décembre 2013 Statut Membre Dernière intervention 31 décembre 2013
25 déc. 2013 à 23:30
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
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
medalaa Messages postés 6 Date d'inscription mercredi 25 décembre 2013 Statut Membre Dernière intervention 31 décembre 2013
27 déc. 2013 à 10:54
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
medalaa Messages postés 6 Date d'inscription mercredi 25 décembre 2013 Statut Membre Dernière intervention 31 décembre 2013
29 déc. 2013 à 14:43
j'attend ta reponse
0
Utilisateur anonyme
29 déc. 2013 à 16:46
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
& pour exécuter la commande en arriere plan
>ff pour mettre le resultas de la commande dans un fichier qui s'apelle ff
0
Utilisateur anonyme
29 déc. 2013 à 23:00
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