Problem csh
medalaa
Messages postés
8
Statut
Membre
-
Utilisateur anonyme -
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:
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
je suis pas fort en anglai
en français, non plus :(
tu assignes des variables sans
et, bonus, le développement de commandes se fait entre backticks, et non entre
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
$( )
if ( "$var" == "$otVar" )qu'est censé faire
then
echo "ok"
else
echo "ko"
endif
&>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.
cshest pointilleux sur les passages à la ligne.
j'attend ta reponse
ouais ? beh, tu peux faire des tests en console, lire le
man...