integer expression expected

integer expression expected - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 03-08-2009 à 17:40:30    

bonjour,
j'ai un script qui fait :


    rating=$(exiv2 -pa "$file" | grep -w 'Exif.Image.Rating' | awk '{print $4}')
    if [ "$rating" -gt "0" ]; then


et bien sûr à l'exécution j'ai droit à un :


line 12: [: : integer expression expected
line 12: [: standard): integer expression expected


à priori c'est du à une histoire de integer, comment est ce que je peux éviter cette erreur?
je précise que malgré ce message le script fonctionne
 
merci


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 03-08-2009 à 17:40:30   

Reply

Marsh Posté le 03-08-2009 à 23:13:10    

Je suppose quand le champ n'est pas renseigné.


---------------
La réponse est 42
Reply

Marsh Posté le 04-08-2009 à 10:42:07    

+1 pour twocats
 
perso j'initialise toujours mes entiers à une valeur par défaut ...
 
 
rating=0;
...
rating=$(...)
if [ $rating -gt 0 ] ; then
...
fi

Reply

Marsh Posté le 04-08-2009 à 11:25:03    

ha oué c'est pas bête ça
je teste ça ce soir et je vous tiens au courant
merci


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 04-08-2009 à 18:04:41    

j'ai toujours l'erreur
je vous mets le script :

find /home/partages/voyages -name "*.jpg" | while read file; do
    rating=0
    rating=$(exiv2 -pa "$file" | grep -w 'Exif.Image.Rating' | awk '{print $4}')
    if [ $rating -gt 0 ]; then
        rep=$(echo "$photos/$(basename "$(dirname "$file" )" )" | sed 's/ /_/g' | sed 's/-/_/g')
        [ -d "$rep" ] || mkdir "$rep"
        cp -r "$file" "$rep/"
    fi
done


 
et le retour


damien@lanfeust:~$ sh scripts/cron/hebdomadaire.sh
scripts/cron/hebdomadaire.sh: line 13: [: -gt: unary operator expected
scripts/cron/hebdomadaire.sh: line 13: [: standard): integer expression expected
scripts/cron/hebdomadaire.sh: line 13: [: standard): integer expression expected
...


 
merci de votre aide


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 04-08-2009 à 18:36:23    

c'est quoi le -pa ?
-p = print
exiv2 -a = time  (Time adjustment in the format )?

Reply

Marsh Posté le 04-08-2009 à 18:41:36    

Je ne sais pas quel interpréteur shell tu utilises, mais avec bash, par exemple, tu pourrais :

 

1/ virer la ligne

rating=0


Tu "écrases" toujours sa valeur, avec l'expression suivante, même si elle équivaut à null

 

2/ ajouter un

rating=${rating:=0}


juste derrière

rating=$(exiv2 -pa "$file" | grep -w 'Exif.Image.Rating' | awk '{print $4}')


Ca permet d'initialiser à 0 ta variable rating si elle "vaut" null ou si elle est non initialisée.

 

EDIT : pour ceux que ça intéresse, man bash ( ou allez voir là )
chapitre Parameter Expansion


Message édité par Zzozo le 04-08-2009 à 18:44:58

---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 04-08-2009 à 19:02:00    

j'utilise bash aussi (enfin j'essaye ;) )
par contre ça ne fonctionne toujours pas


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 04-08-2009 à 19:08:08    

rajoutes un -x au niveau de la ligne de l'interpréteur ( par ex. #!/bin/bash -x ) , histoire de voir un peu mieux ce qui se passe, quand ton script se déroule
 
Ca te permettra surement de mettre en évidence ce qui ne va pas


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
Reply

Marsh Posté le 04-08-2009 à 20:16:25    

en fait j'ai l'impression qu'il y a plusieurs problèmes
le premier était effectivement lié à une valeur nulle, ta solution zzozo à l'aire de fonctionner
 
la deuxième est pour moi plus bizarre
voila ce que j'obtiens avec un des fichiers qui a l'aire de poser des problèmes


damien@lanfeust:~$ rating=0; rating=$(exiv2 -pa "/home/partages/voyages/2008-04 Franceville/p1050876.jpg" | grep -w 'Exif.Image.Rating' | awk '{print $4}'); echo $rating
standard)
damien@lanfeust:~$ exiv2 -pa "/home/partages/voyages/2008-04 Franceville/p1050876.jpg" | grep "standard)"
damien@lanfeust:~$


et comme par hasard ce "standard)" on le retrouve dans les messages d'erreurs
il provient d'où? vous savez?
 
merci


---------------
dam's (debianer), ma galerie Flickr
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed