Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2636 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  integer expression expected

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

integer expression expected

n°1152497
dams78
développateur
Posté le 03-08-2009 à 17:40:30  profilanswer
 

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
mood
Publicité
Posté le 03-08-2009 à 17:40:30  profilanswer
 

n°1152532
twocats
Posté le 03-08-2009 à 23:13:10  profilanswer
 

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


---------------
La réponse est 42
n°1152616
fighting_f​alcon
Posté le 04-08-2009 à 10:42:07  profilanswer
 

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

n°1152647
dams78
développateur
Posté le 04-08-2009 à 11:25:03  profilanswer
 

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
n°1152890
dams78
développateur
Posté le 04-08-2009 à 18:04:41  profilanswer
 

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
n°1152892
dchost99
Posté le 04-08-2009 à 18:36:23  profilanswer
 

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

n°1152893
Zzozo
Modérateur
Un peu, passionément, à la fol
Posté le 04-08-2009 à 18:41:36  profilanswer
 

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
n°1152902
dams78
développateur
Posté le 04-08-2009 à 19:02:00  profilanswer
 

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


---------------
dam's (debianer), ma galerie Flickr
n°1152903
Zzozo
Modérateur
Un peu, passionément, à la fol
Posté le 04-08-2009 à 19:08:08  profilanswer
 

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
n°1152920
dams78
développateur
Posté le 04-08-2009 à 20:16:25  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  integer expression expected

 

Sujets relatifs
[Divers][Emacs] Query replace et expression rationnelle[shell]expression réguliere sur parametres réseau
expression reguliere, awk et variablegvim Expression réguliére Eof
[Systeme liste diffusion SYMPA] Expression régulière + form[shell] binary operator expected?
squid guard interdire des expression mais pas sur certain sites[Résolu] Expression rationnelle : modifier une chaîne
protection d'expression régulière / shell / grepexpression régulière shell
Plus de sujets relatifs à : integer expression expected


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR