Nous sommes le Jeu 28 Mars, 2024 10:25
Supprimer les cookies

Petit soucis de script

Au quotidien encore quelques soucis ?

Mer 04 Déc, 2013 19:53

Bonjour à tous,

Voilà, j'espère que je me suis pas trompée de sous forum.
Dans le cadre de mes cours je dois faire un script pour un tp.
voici l'énoncé:
"Créer un fichier de commandes com2 exécutable par tous les membres de votre groupe. Ce fichier de commandes com2 :
1. prend un et un seul paramètre et teste qu’il s’agit bien d’un répertoire. Dans le cas contraire,un code erreur est retourné.
2. crée sous votre répertoire d’accueil un répertoire de nom "anmoisjour" (050428 pour le 28 avril 2005) après avoir vérifié qu’un tel répertoire n’existe pas.
3. recopie les fichiers fich1, fich2 ...fich5 du répertoire passé en paramètre dans ce nouveau répertoire puis les enlève du répertoire origine.
4. Crée, sous votre répertoire d’accueil :
– un fichier de nom fich-concat.numero-du-processus-courant dans lequel se trouvera
le contenu concaténé des fichiers fich1, fich2 ...fich5.
– un fichier de nom nom-de-la-commande.numero-du-processus-courant contenant les
noms des fichiers traités.
Bien entendu, "numero-du-processus-courant" et "nom-de-la-commande" sont remplacées par leur valeur dans les noms de fichiers."

Voici ce que j'ai codé pour le moment:
#! /bin/bash
if [ ! -d "$1" ]
then exit 1;
fi
anmoisjour=`date +%y%m%d`;
if [ -d "$anmoisjour" ]
then rmdir $anmoisjour;
fi
mkdir $anmoisjour;
for a in `ls $1`
do exec mv $a /$anmoisjour/$a;
exec cat $a >> fich-concat.$$;
done

Et voici en exclusivité le superbe message d'erreur que j'obtiens:
mv: impossible d'évaluer « 1kjlljh »: Aucun fichier ou dossier de ce type

Alors plusieurs choses:
- pourquoi ai-je un message d'erreur que pour un des fichiers?
- comment débugger mieux un script bash? (des astuces, des trucs à savoir)
- et bien sur avez-vous une idée sur ce qui pourrait bugger dans mon script?

Voilà merci de m'avoir lu :) et j'espère que ça ne dérange pas si je poste ce genre de questions ici si c'est le cas je m'en excuse.
freeGeek

Messages : 7

Jeu 05 Déc, 2013 09:40

Bonjour,

Pour commencer, il faut enlever les "exec" : ils remplaçent le shell qui exécute ton script par la nouvelle commande, donc tu n'iras pas plus loin dans ton script...
Le / devant $anmoisjour doit aussi poser problème, tu essayes d'écrire à la racine du file system.
Et $a ne doit pas exister dans le répertoire courant, j'imagine que ça marchera mieux avec $1/$a
Ça donnerait : mv $1/$a $anmoisjour/$a

Pour ton message d'erreur je ne peux pas dire grand chose, il faudrait connaître les noms des fichiers dans ton répertoire.

Sinon, pour debugger, tu peux ajouter une ligne "set -x" au début de ton script, ça t'affiche tout ce qui est exécuté (en remplaçant les variables par leurs valeurs)
hjuvi

Messages : 4

Jeu 05 Déc, 2013 15:30

Merci pour la réponse.
Je vais essayer ça
freeGeek

Messages : 7

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit