Problem csh
medalaa
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
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...