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 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 big_smile

#!/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 smile

#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=$1

shift

#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