Pages : 1
#1 Le 08/11/2007, à 11:04
- nolan
[Résolu]petit souci
Bonjour,
J'ai un petit souci. Je m'essaye dans l'écriture d'un script mais je but
En mode console la commande fonctionne
convert -delay 80 *.JPG gifs_anim.gif
Dans le code aussi mais quand je passe par une variable $1 dans le script le fichier est créer mais il ne fonctionne pas image fixe.
#!/bin/sh
#******************************************************************
# Script pour créer un gif annimé
#******************************************************************
if test -f "$1"
then
echo Le fichier \"$1\" est bien present.
echo "Voulez-vous créer le Gif annimé ? (O pour le créer)"
read ouinon
if [ $ouinon = "o" ]||[ $ouinon = "O" ]
then
#???????????????????????????????????????????????????????????????????
#Fonctionne
#convert -delay 80 *.JPG gifs_anim.gif
#Ne fonctionne pas
#convert -delay 80 $1 gifs_anim.gif
#???????????????????????????????????????????????????????????????????
else
echo "Ok, le gifs_anim.gif ne sera pas créé..."
fi
else
Auriez-vous une idée
Merci
Dernière modification par nolan (Le 15/11/2007, à 09:28)
N'oubliez pas d'ajouter résolu au titre quand le sujet l'est.
Sous linux on s'en sort toujours sans reformater
Hors ligne
#2 Le 10/11/2007, à 00:48
- chcamier
Re : [Résolu]petit souci
Bonsoir,
Ton problèle est logique. En effet le shell interprète les jockers avant de lancer la commande. Si dans un répertoire, tu as les fichiers "a", "b", "c" et "d" et que l'on tape :
$ commande *
Ce qui est exécuté c'est :
$ commande a b c d
avec :
- $1 = "a"
- $2 = "b"
- $3 = "c"
- $4 = "d"
Donc, dans ton programme, si tu remplace la ligne :
convert -delay 80 $1 gifs_anim.gif
Par la ligne :
convert -delay 80 "$@" gifs_anim.gif
ou
convert -delay 80 $* gifs_anim.gif
cela devrait fonctionner.
Je conseille la première forme car "$@" sera interprété comme "$1" "$2" ... "$n" alors que la forme $* sera interprètée comme $1 $2 $3 ...$n interdisant les noms de ficiers contenant des blancs, caractères de poncuation pouvant être interprèté diversement pas le shell, etc.
En espèrant avoir répondu à tes attentes
CC
Hors ligne
#3 Le 12/11/2007, à 10:36
- nolan
Re : [Résolu]petit souci
Merci pour tes explications claires. Et en plus cela fonctionne
#!/bin/sh
#******************************************************************
# Script pour créer un gif animés
#******************************************************************
if test -f "$1"
then
echo Le fichier \"$1\" est bien present.
echo "Voulez-vous créer le Gif animé ? (O pour le créer)"
read ouinon
if [ $ouinon = "o" ]||[ $ouinon = "O" ]
then
#Fonctionne avec le @ devant $
convert -delay 80 $@ gifs_anim.gif
else
echo "Ok, le gifs_anim.gif ne sera pas créé..."
fi
else
echo "Fichier \"$1\" absent"
fi
Le script n'ai pas fini c'est un début.
Dernière modification par nolan (Le 12/11/2007, à 10:41)
N'oubliez pas d'ajouter résolu au titre quand le sujet l'est.
Sous linux on s'en sort toujours sans reformater
Hors ligne
#4 Le 12/11/2007, à 11:05
- nolan
Re : [Résolu]petit souci
Encore un petit truc
./nom script *.JPG lenomdugif.gif
me revoie
convert: unable to open image `test.gif': Aucun fichier ou répertoire de ce type.
#!/bin/sh
#******************************************************************
# Script pour créer un gif animés
#******************************************************************
if test -f "$1"
then
echo Le fichier \"$1\" est bien present.
echo "Voulez-vous créer le Gif animé ? (O pour le créer)"
read ouinon
if [ $ouinon = "o" ]||[ $ouinon = "O" ]
then
#Fonctionne avec le @ devant $ $2 pour le nom du gif
convert -delay 80 $@ $2
else
echo "Ok, le $2 ne sera pas créé..."
fi
else
echo "Fichier \"$1\" absent"
fi
N'oubliez pas d'ajouter résolu au titre quand le sujet l'est.
Sous linux on s'en sort toujours sans reformater
Hors ligne
#5 Le 12/11/2007, à 14:03
- Laurent Marzullo
Re : [Résolu]petit souci
Je ne pense pas que tu t'en sortes comme cela.
Essaie plutot de changer l'ordre de tes paramètres en prenant le fichier gif comme premier parametre.
Ensuite tu peux faire d'en ton script:
fichier_gif = $1
shift # Tu supprimer le $1 de la ligne de commande
# ensuite $* ou $@ est le reste de la ligne de commande donc tous les fichier *.jpgs.
# et là .. je te conseille fortement d'interdire les espaces dans le nom du fichier
convert ...
ou alors tu fais plutot autre chose si tu as des espaces:
tonscript \*.jpg
n'oublie pas le \
et dans ton script:
dest=$1
shift
for i in $dest
do
jpg="$jpg \"$i\""
done
# $jpg est la liste de tes fichier JPG avec des guillemets.
#6 Le 14/11/2007, à 10:11
- nolan
Re : [Résolu]petit souci
Merci je vais testé je ne pas eu beaucoup de temps
N'oubliez pas d'ajouter résolu au titre quand le sujet l'est.
Sous linux on s'en sort toujours sans reformater
Hors ligne
#7 Le 14/11/2007, à 11:07
- nolan
Re : [Résolu]petit souci
Merci cela fonction en partie reste des petites questions
#!/bin/sh
#******************************************************************
# Script pour créer un gif annimé
#******************************************************************
#Donne le nom du fichier final passé en paramettre
fichier_gif = $1
shift
#Test la présence du fichier
if test -f "$1"
then
echo "Voulez-vous créer le $fichier_gif (O pour le créer) ?"
read ouinon
if [ $ouinon = "o" ]||[ $ouinon = "O" ]
then
#Création du gifs
convert -delay 80 $@ $fichier_gif
echo "Le fichier" $fichier_gif " a été créé..."
else
echo "Ok, le $fichier_gif ne sera pas créé..."
fi
else
echo "Fichier \"$1\" absent"
fi
Pourquoi j'ai une erreur
./creat_gifs_anim.sh: 6: fichier_gif: not found
et pourquoi $fichier_gif est vide
Voulez-vous créer le (O pour le créer) ?
o
Le fichier a été créé...
Dernière modification par nolan (Le 14/11/2007, à 11:07)
N'oubliez pas d'ajouter résolu au titre quand le sujet l'est.
Sous linux on s'en sort toujours sans reformater
Hors ligne
#8 Le 14/11/2007, à 11:19
- Sciensous
Re : [Résolu]petit souci
enlève les espaces entre le "=" de fichiers_gif
et merci à chcamier pour le rappel des parametres
#9 Le 14/11/2007, à 13:17
- nolan
Re : [Résolu]petit souci
Bonjour,
Merci cela a réglé mon problème d'erreur mais pas celui de nom le nom indiqué n'est pas le bon. Pouvez-vous m'expliqué ?
N'oubliez pas d'ajouter résolu au titre quand le sujet l'est.
Sous linux on s'en sort toujours sans reformater
Hors ligne
#10 Le 14/11/2007, à 13:23
- Gojita
Re : [Résolu]petit souci
c'est à dire ?
Comment as-tu lancer ton script ?
Il y a 10 sortes de personnes
Celles qui savent compter en binaires et les autres.
Hors ligne
#11 Le 14/11/2007, à 15:28
- nolan
Re : [Résolu]petit souci
Bonjour,
./nom script *.JPG lenomdugif.gif
me revoie le-nom-du-jpg et en même temps me fait une multitude de fichiers non voulu.
Si je remet les espaces j'ai l'erreur mais plus la multitude de fichier ?????
#!/bin/sh
#******************************************************************
# Script pour créer un gif annimé
#******************************************************************
#Donne le nom du fichier final passé en paramettre
#Si retrait des espaces fonction sans messege d'erreur mais crée une multitude de JPG
#fichier_gif=$1
#Si retrait des espaces fonction sans messege d'erreur mais crée une multitude de JPG
#fichier_gif =$1
#Fonction mais message d'erreur
#fichier_gif = $1
shift
#Test la présence du fichier
if test -f "$1"
then
#Affiche le nom du JPG et pas celui du fichier demandé toto.gif
echo "Voulez-vous créer le $fichier_gif (O pour le créer) ?"
read ouinon
if [ $ouinon = "o" ]||[ $ouinon = "O" ]
then
#Création du gif
#Crée bien le GIF avec le bon nom toto.gif
convert -delay 80 $@ $fichier_gif
#Devrait afficher toto.gif le nom du fichier demandé dans $1
echo "Le fichier" $fichier_gif " a été créé..."
else
#Devrait afficher toto.gif le nom du fichier demandé dans $1
echo "Ok, le $fichier_gif ne sera pas créé..."
fi
else
#Affiche bien le nom du fichier JPG
echo "Fichier \"$1\" absent"
Je sais pas si je si clair dans l'explacation.
Dernière modification par nolan (Le 14/11/2007, à 15:46)
N'oubliez pas d'ajouter résolu au titre quand le sujet l'est.
Sous linux on s'en sort toujours sans reformater
Hors ligne
#12 Le 14/11/2007, à 15:46
- Sciensous
Re : [Résolu]petit souci
j'ai rapidement lu mais au lieu de
./nom script *.JPG lenomdugif.gif
il faut ecrire:
./nom script lenomdugif.gif *.JPG
d'après Laurent Marzullo
#13 Le 14/11/2007, à 15:49
- nolan
Re : [Résolu]petit souci
Merci c'est bon cette foie sans les espaces.
Qui pourrait m'expliquer comment est (exécuté ?, interprété ?) le script.
Dernière modification par nolan (Le 14/11/2007, à 15:51)
N'oubliez pas d'ajouter résolu au titre quand le sujet l'est.
Sous linux on s'en sort toujours sans reformater
Hors ligne
#14 Le 14/11/2007, à 16:36
- Gojita
Re : [Résolu]petit souci
./nom script \*.JPG lenomdugif.gif
Il faut mettre un '\' avant le '*' (comm je te l'ai dit plus haut).
Il y a 10 sortes de personnes
Celles qui savent compter en binaires et les autres.
Hors ligne
#15 Le 15/11/2007, à 09:28
- nolan
Re : [Résolu]petit souci
Bonjour,
Alors pour finir cette parti
./creat_gifs_anim.sh \*.JPG toto.gif
Me renvoie Fichier "toto.gif" absent
./creat_gifs_anim.sh toto.gif \*.JPG
Me renvoie Fichier "*.JPG" absent
Donc voici la version actuelle qui fonctionne pour le moment.
#!/bin/sh
#******************************************************************
# Script pour créer un gif annimé en une seule commande
#******************************************************************
#Donne le nom du fichier final passé en paramettre
#Utilisation ./creat_gifs_anim.sh le_nom_du_fichier.gif *.extention
fichier_gif=$1shift
#Test la présence du fichier
if test -f "$1"
then
#Affiche le nom du fichier demandé toto.gif
echo "Voulez-vous créer le $fichier_gif (O pour le créer) ?"
read ouinon
if [ $ouinon = "o" ]||[ $ouinon = "O" ]
then
#Création du gif
convert -delay 80 $@ $fichier_gif
#Afficher toto.gif le non du fichier demandé dans $1
echo "Le fichier" $fichier_gif " a été créé..."
else
#Afficher toto.gif le non du fichier demandé dans $1
echo "Ok, le $fichier_gif ne sera pas créé..."
fi
else
#Affiche bien le nom du fichier *.extention
echo "Fichier \"$1\" absent"
fi
Merci à vous tous
Dernière modification par nolan (Le 15/11/2007, à 09:29)
N'oubliez pas d'ajouter résolu au titre quand le sujet l'est.
Sous linux on s'en sort toujours sans reformater
Hors ligne
#16 Le 15/11/2007, à 16:38
- Sciensous
Re : [Résolu]petit souci
désolé Gojita, mais il me semble qu'il ne faut pas mettre le \ devant le *.jpg car on utilise $@ ici
autre chose, comme il faut faire la difference avec les minuscules et les majuscules sous unix, as-tu bien vérifié ce point en mettant *.JPG et non *.jpg ?
(on peut réécrire le code pour qu'il le fasse automatiquement, mais c'est une autre histoire non ?)
#17 Le 15/11/2007, à 17:11
- nolan
Re : [Résolu]petit souci
Bonsoir,
y a t'il un truc comme Ucase Lcase pour mettre tout en majuscule ou en minuscule ?
N'oubliez pas d'ajouter résolu au titre quand le sujet l'est.
Sous linux on s'en sort toujours sans reformater
Hors ligne
#18 Le 15/11/2007, à 18:46
- Sciensous
Re : [Résolu]petit souci
pour tenir transformer des min/MAJ dans texte :
texte=`echo $texte | tr 'A-Z' 'a-z'`
explications:
redirige le resultat des parametres contenus dans la ligne de commande ( $@ ) dans l'instruction tr qui permet de remplacer des caractères par d'autres ( ici les majuscules de A à Z par des a à z )
puis place le résultat de cette transformation dans la variable liste --> d'o๠l'utilisation des ` obtenues par altgr + 7
MAIS
ici l'utilisation est plus sioux: il faut parcourrir le dossier et prendre des jpg que l'extension soit min ou MAJ
#19 Le 16/11/2007, à 09:07
- nolan
Re : [Résolu]petit souci
Bonjour,
Doit avoir de faire cela.
Mon script n'est pas fini car je veux pouvoir redimensionné les fichiers avant de créer le gif. Il y as du boulot.
N'oubliez pas d'ajouter résolu au titre quand le sujet l'est.
Sous linux on s'en sort toujours sans reformater
Hors ligne
Pages : 1