Retourner aux forums || Retourner au forum Programmation.shell
Programmation.shell : Problèmes de chemin et truc qui va pas avec if elif fi
Posté par hdiamant () le 22 janvier 2007# Récupérer le nom du fichier sélectionné et son extension name=`echo "$1" | cut -d"." -f1` extend=`echo "$1" | cut -d"." -f2` file0=`echo "$name.$extend" | sed 's/ /\?/g'` file1=`zenity --entry --title="Renommer le fichier?" --text="Renommez le fichier "$1", s'il vous plaît" --entry-text="$file0"| sed 's/ /\-/g'` mv "$file0" "$file1.$extend"Deuxième problème :
# Récupération de la durée du fichier. if [ "$extend"="mp3" ] ; then MM=`mp3info -x $file0 | grep Length | cut -d ":" -f2` SS=`mp3info -x $file0 | grep Length | cut -d ":" -f3` elif [ "$extend"="ogg" ] ; then MM=`ogginfo $file0 | grep Playback | cut -d " " -f3 | cut -d "." -f1` else zenity --info --title="Erreur" --text="Le fichier n'est pas conforme." ; exit fi zenity --info --title "Résultat" --text "Durée du fichier : $MM m $SS s."Je dois récupérer la durée de fichier audio. Mon problème c'est que pris séparément ces instructions fonctionnent mais là, dans le script, rien ! Je ne crois pas que ce soit le même problème de chemin puisque ça fonctionne si je commente toutes les instructions et ne retiens que, par exemple, le cas du mp3, appliqué à un fichier mp3. (Je sais, faut pas être désespéré, mais quand même, au secours!)
> Lire le message (6 commentaires, moyenne: 1,2).
Erreur de débutant
Oups, le problème numéro 1 vient d'être réglé avec la suppression de l'expression
sed 's/ /\?/g'
dans la 3ème ligne !
Par contre, j'ai encore besoin d'aide pour le problème numéro 2 demeure !
(à vrai dire, je n'ai pas tout à fait compris pourquoi ça ne marchait pas avec sed dans mon problème 1, si quelqu'un peux m'expliquer !)
Merci d'avance !
-
[^]Re: Erreur de débutant
Posté par NeoX () le 22/01/2007 à 22:41. (lien). Évalué à 1.tu cherchais les espaces pour les remplacer par ?
s / ton espace / le symbole ? / g--
Apprendre par les autres, c'est bien.
Apprendre par soi-meme (RTFM, man, et notre ami google) c'est mieux-
[^]Re: Erreur de débutant
Posté par hdiamant () le 22/01/2007 à 23:08. (lien). Évalué à 1.Oui, c'est curieux, maintenant que j'y pense, c'est tout à fait dénué d'intérêt. Il me semblait que sans cela ça bloquait ailleurs mais après maints essais, non.
C'était un morceau de code réellement inutile.
Pour mon deuxième problème, j'ai corrigé la dernière ligne (signe = manquant après --text) mais cela ne change rien.
Ai-je manqué quelque chose dans la logique du if ?-
[^]Re: Erreur de débutant
Posté par hdiamant () le 22/01/2007 à 23:40. (lien). Évalué à 1.Alors en reprenant tout à zéro, dans un fichier tout propre, ben, ça a marché, sans que je sâche vraiment pourquoi.
Je mets ici le code qui me renvoie les minutes et les secondes des fichiers mp3 ou ogg que j'utilise.
# Récupération de la durée du fichier.
if
[ "$extend" = "mp3" ] ; then
MM=`mp3info -x "$file0" | grep Length | cut -d ":" -f2`
SS=`mp3info -x "$file0" | grep Length | cut -d ":" -f3`
elif
[ "$extend" = "ogg" ] ; then
MM=`ogginfo "$1" | grep Playback | cut -d " " -f3 | cut -d "m" -f1`
SS=`ogginfo "$1" | grep Playback | cut -d " " -f3 | cut -d ":" -f2 | cut -d "." -f1`
else
zenity --info --title="Erreur" --text="Le fichier n'est pas conforme."
fi
zenity --info --title "Résultat" --text="Durée du fichier : $MM m et $SS s."
cp "$1" "$groupfile-$file1.$extend-CQ"
Au passage, que pensez-vous de ma manière de récupérer les minutes et secondes? Elle me paraît peu élégante mais je crois qu'elle fonctionne (pour le moment) et qu'elle me permettra d'envoyer facilement ces données vers une base mysql.
Dites-moi si je me trompe !-
[^]Re: Erreur de débutant
Posté par -=[ Benoit Plessis ]=- (page perso, ) le 23/01/2007 à 11:38. (lien). Évalué à 2.Je ferais une remarque rapide sur les extensions:
Sous linux elles n'existent que pour l'utilisateur ou presque.
utilise plutot la commande 'file' pour savoir ce que contiennent tes fichiers.
et fait attention, si l'argument fourni a ton script est un chemin de fichier complet
dont un dossier contient un point, un chemin relatif (eg ../file.mp3) ou même
plus simplement si ton fichier contient plusieurs point (toto.tata.mp3) bein ton script ne marchera pas (du moins pas comme tu l'attend)--
Il [e2fsck] a bien démarré, mais il m'a rendu la main aussitot en me disant "houlala, c'est pas beau à voir votre truc, je préfèrerai que vous teniez vous même la tronçonneuse" (traduction libre)-
[^]Re: Erreur de débutant
Posté par hdiamant () le 23/01/2007 à 11:56. (lien). Évalué à 1.Merci pour tes conseils mais je n'ai pas réussi à comprendre comment obtenir cette info avec la commande file. Je reste ouvert à d'autres solutions donc.
Par contre j'ai un souci avec les paths. Je n'y comprends rien. Si quelqu'un avait la gentillesse de m'en dire plus sur par exemple : $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS et surtout sur la manière dont je peux trouver le path du fichier sélectionné ! Car c'est là que coince mon script maintenant.
-
-
-
-
Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.shell



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.