[bash] if [ -n chaine ] avec chaine=retour d'une commande
Résolu
Swiss Knight
Messages postés
2257
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Salut tout le monde,
j'ai un petit problème avec bash où je m'amuse à trier des images :
le test if me fait toujours aller le "do_stuff" , même lorsque la commande qui définit keyword ne retourne rien.
pourtant ceci fonctionne si un fichier contient "chose" dans son nom, et ça m'affiche bonjour :
Merci de vos lumières ;) !
j'ai un petit problème avec bash où je m'amuse à trier des images :
for image in 'ls $1 | grep -E ".*\.jpe?g" 2>/dev/null'
do
keyword='exiftool $1/$image | grep -i "MotClef"'
if [ $keyword ]
then
do_stuff
fi
done
le test if me fait toujours aller le "do_stuff" , même lorsque la commande qui définit keyword ne retourne rien.
pourtant ceci fonctionne si un fichier contient "chose" dans son nom, et ça m'affiche bonjour :
#!/bin/bash var='ls | grep chose' if [ $var ] then echo "bonjour" fi
Merci de vos lumières ;) !
A voir également:
- [bash] if [ -n chaine ] avec chaine=retour d'une commande
- Chaine tnt gratuite sur mobile - Guide
- Invite de commande - Guide
- Plus de chaine tv - Guide
- Chaine musique bouygues - Accueil - Guide TV et vidéo
- L'équipe live foot chaine - Accueil - TV & Vidéo
3 réponses
salut,
et comme ça
et comme ça
shopt -s extglob
for img in "$1"/*.jp?(e)g
do
exiftool "$img" | grep -qi "MotClef" && {
do_stuff
}
done
Salut,
peut-être que ça marche, je n'ai pas essayé.
Je ne cherche pas à trouver une solution (j'en ai une), mais je cherche à comprendre dans le cas exposé ci-dessus uniquement, pourquoi lorsque la commande exiftool ne retourne rien sur une image, ça fait quand même aller le do_stuff sur cette image...
Par exemple, si une image, mettons "IMG_1234.jpg" ne contient pas le mot clé "MotClef," elle ne doit pas être traitée par les commandes dans le if suivant. Or elle est traitée comme toutes les autres.
Et je ne comprends pas pourquoi. Elle ne devrait pas normalement.
peut-être que ça marche, je n'ai pas essayé.
Je ne cherche pas à trouver une solution (j'en ai une), mais je cherche à comprendre dans le cas exposé ci-dessus uniquement, pourquoi lorsque la commande exiftool ne retourne rien sur une image, ça fait quand même aller le do_stuff sur cette image...
Par exemple, si une image, mettons "IMG_1234.jpg" ne contient pas le mot clé "MotClef," elle ne doit pas être traitée par les commandes dans le if suivant. Or elle est traitée comme toutes les autres.
Et je ne comprends pas pourquoi. Elle ne devrait pas normalement.