Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/08/2006, à 17:09

ZuZu

Débutant programmation, ne trouve pas son erreur en bash !

Voila comme annoncé dans le sujet, je débute en programmation et je me fait des petits exos car je trouve ca tres sympa wink
J'ai voulut concevoir un programme grace a ce tutorial : http://doc.ubuntu-fr.org/console/script_shell%3E;
Mon programme me sert a décompressé les fichiers compressé qui arrive dans Incoming, et a cré un fichier avec l'artiste/l'auteur dans ma bibliotheque.
Cependant, ca ne marche pas !
Je voudrais savoir pourquoi smile
Merci

#!/bin/sh
echo "### ZuZu Copyright ###"
echo "Voulez aller Décompresser et déplacer un fichier téléchargé vers la Bibliotheque, Continuer?"
read ouinon
case "$ouinon" in
y | Y | o | O )
 echo "OK quel est le fichier a décompresser?"
read file
echo "Quel est le format de compression? (rar zip tar.gz ou ace)"
read format
echo "Quel est le nom de l'artiste?"
read artiste;;
n | N ) echo "D'accord le programme va etre quitté, a bientot" && exit 0;;
* ) echo "Erreur lors de la saisie"
exit 0;;
esac
if [ -d "~/zz/Bibliotheque/$artiste" ]; then
{
echo "OK l'Artiste $artiste est deja référencé dans la Bibliotheque"
}
else
{
echo "Le Dossier $artiste va etre cré dans la Bibliotheque" 
mkdir ~/zz/Bibliotheque/$artiste
}
fi
rep=$file.$format
rep2=$file$format
case "format" in
rar ) unrar x ~/Desktop/Incoming/$rep && mv ~/Desktop/Incoming/$file ~/zz/Bibliotheque/$artiste/
echo "Décompression de $file terminé";;
ace ) unrar x ~/Desktop/Incoming/$rep && mv ~/Desktop/Incoming/$file ~/zz/Bibliotheque/$artiste/
echo "Décompression de $file terminé";;
zip ) unzip  ~/Desktop/Incoming/$rep && mv ~/Desktop/Incoming/$file ~/zz/Bibliotheque/$artiste/
echo "Décompression de $file terminé";;
tar.gz ) tar tvzf ~/Desktop/Incoming/$rep && mv ~/Desktop/Incoming/$file ~/zz/Bibliotheque/$artiste/
echo "Décompression de $file terminé";;
.rar ) unrar x ~/Desktop/Incoming/$rep2 && mv ~/Desktop/Incoming/$file ~/mp3/Bibliotheque/$artiste/
echo "Décompression de $file terminé";;
.ace ) unrar x ~/Desktop/Incoming/$rep2 && mv ~/Desktop/Incoming/$file ~/zz/Bibliotheque/$artiste/
echo "Décompression de $file terminé";;
.zip ) unzip  ~/Desktop/Incoming/$rep2 && mv ~/Desktop/Incoming/$file ~/zz/Bibliotheque/$artiste/
echo "Décompression de $file terminé";;
.tar.gz ) tar tvzf ~/Desktop/Incoming/$rep2 && mv ~/Desktop/Incoming/$file ~/zz/Bibliotheque/$artiste/
echo "Décompression de $file terminé";;
esac

exit 0

Voila je vous remercie, de plus si vous avez des tuyaux ou tutorial qui vous ont aider lorsque vous débutiez, n'hesitez pas je ne demande que ca wink
Merci beaucoup a tous !

#2 Le 16/08/2006, à 12:57

gene69

Re : Débutant programmation, ne trouve pas son erreur en bash !

evite les && pour que les commandes s'executent successivement.
c'est quoi l'erreur?


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#3 Le 16/08/2006, à 14:03

ZuZu

Re : Débutant programmation, ne trouve pas son erreur en bash !

l'erreur c'est que ca ne marche pas smile mes fichiers ne sont pas décompressés !
En faite je suis pas sur de ma déclaration de variable rep="$file"."$format"
Sinon je met pas && je met quoi ? oO
Merci !

#4 Le 16/08/2006, à 15:19

KemperBoyd

Re : Débutant programmation, ne trouve pas son erreur en bash !

ZuZu a écrit :

Sinon je met pas && je met quoi ? oO
Merci !

cela veut dire qu'au lieu de :

rar ) unrar x ~/Desktop/Incoming/$rep && mv ~/Desktop/Incoming/$file ~/zz/Bibliotheque/$artiste/
echo "Décompression de $file terminé";;

tu fais :

rar )
 unrar x ~/Desktop/Incoming/$rep
 mv ~/Desktop/Incoming/$file ~/zz/Bibliotheque/$artiste/
 echo "Décompression de $file terminé";;

Sébastien

Hors ligne

#5 Le 16/08/2006, à 15:44

ZuZu

Re : Débutant programmation, ne trouve pas son erreur en bash !

ah tres bien je ne savais pas, c'est encore plus simple il ne faut rien mettre ! smile
Je te remercie du tuyau !
Sinon cette déclaration de variable rep="$file"."$format" est t'elle juste?
merci

#6 Le 16/08/2006, à 22:00

kelso

Re : Débutant programmation, ne trouve pas son erreur en bash !

ZuZu a écrit :

ah tres bien je ne savais pas, c'est encore plus simple il ne faut rien mettre ! smile
Je te remercie du tuyau !
Sinon cette déclaration de variable rep="$file"."$format" est t'elle juste?
merci

rep="$file.$format" suffit

Hors ligne

#7 Le 16/08/2006, à 22:56

JoelS

Re : Débutant programmation, ne trouve pas son erreur en bash !

ZuZu a écrit :

ah tres bien je ne savais pas, c'est encore plus simple il ne faut rien mettre ! smile
Je te remercie du tuyau !
Sinon cette déclaration de variable rep="$file"."$format" est t'elle juste?
merci

Euh fait gaffe quand même: le && permet d'effectuer la commande suivante que si la précédente sort sans erreur, c'est le AND logique (et || est le OU logique).

Quand tu enchaînes des commandes sans le &&, il faut être sûr de ce qui va se passer si une des commandes échoue. Par exemple, j'ai déjà vu un script qui faisait

cd $REP; /bin/rm -fr *

Très bien. Sauf que le jour ou le cd $REP n'a pas marché (parce que le $REP avait déjà été détruit à la mano bêtement), le rm -fr a été effectué sur le mauvais repertoire! Si tu exécutes ton script en tant que root, au revoir .....

Bon, c'était pas moi qui l'avait écrit, parce que j'avais déjà fait quelques années auparavent une coui^H^H^H^Herreur du même acabit.

Donc quand tu écris un script (que ce soit bash, perl, python ou autre, en fait dès que tu interagis avec l'OS), demandes toi à chaque ligne qu'est-ce qui se passe quand ça échoue et dans quelle contexte se retrouve la commande suivante, et la suivante, et la suivante, .... eh oui, les erreurs vonts s'empiler et la aussi ça peut être très rigolo le résultat, mais uniquement si tu as un sens de l'humour très développé!

Une bonne solution pour mon exemple est bien

cd $REP && /bin/rm -fr *

mais uniquement parce que ce qui se passait après était indépendant du contexte d'exécution que laissait cette commande, qu'elle réussisse ou pas.

A part ça, bienvenu dans l'univers du scripting.....

Hors ligne

#8 Le 16/08/2006, à 23:28

coffee

Re : Débutant programmation, ne trouve pas son erreur en bash !

rep="${file}$format"

Si tu désirais faire une contatenation avec le .


Nom d'un tupperware habillé en streetware mangeant de la confiture de pouère et qui se dite où est-ce que je suis ouère !
Tiens mon blog
Les blagues sous forme de fausses aides sont susceptible de ban (ex: rm)

Hors ligne

#9 Le 17/08/2006, à 00:25

gene69

Re : Débutant programmation, ne trouve pas son erreur en bash !

${file}  => i desagree

parce que file est un tableau?

moi je ne sais rien de plus que ça (dsl):
http://abs.traduc.org/abs-3.9-fr/


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne

#10 Le 17/08/2006, à 18:03

ZuZu

Re : Débutant programmation, ne trouve pas son erreur en bash !

Merci de vos réponses ! mais mettez vous d'accord tongue

#11 Le 20/08/2006, à 11:48

ZuZu

Re : Débutant programmation, ne trouve pas son erreur en bash !

Up ... ? roll

#12 Le 20/08/2006, à 14:51

coffee

Re : Débutant programmation, ne trouve pas son erreur en bash !

gene69 a écrit :

${file}  => i desagree

parce que file est un tableau?

moi je ne sais rien de plus que ça (dsl):
http://abs.traduc.org/abs-3.9-fr/

parce que $format est une variable
quand on tape:

$file_$numero.$extension_en_3_lettres_sans_le_point

On risque de ne pas pouvoir récuperer ce nom car bash va lire $file_ et le remplacer par "" car $file existe mais pas $file_.
Donc par habitude je mets des {} pour mes variables pour être sûr de ne pas être embeté. Donc je ne vois pas où est le problème?


Nom d'un tupperware habillé en streetware mangeant de la confiture de pouère et qui se dite où est-ce que je suis ouère !
Tiens mon blog
Les blagues sous forme de fausses aides sont susceptible de ban (ex: rm)

Hors ligne

#13 Le 23/08/2006, à 23:08

gene69

Re : Débutant programmation, ne trouve pas son erreur en bash !

compris.
Je ne connaissais pas cette syntaxe.


Quand le berger est lâche, le loup chie de la laine.
A (draft) guide to UFO Alien-Invasion

Hors ligne