J’essaie actuellement d’écrire un script bash qui m’aide à parcourir un répertoire et à vérifier les extensions .jpeg ou .jpg sur les fichiers. Je suis venu avec ce qui suit:
#declare $PICPATH, etc... for file in $PICPATH if [ ${file -5} == ".jpeg" -o ${file -4} == ".jpg" ]; then #do some exif related stuff here. else #throw some errors fi done
Lors de l’exécution, bash continue à lancer une erreur sur la ligne if: “erreur de syntaxe proche d’un jeton inattendu” si “.
Je suis complètement nouveau pour le scripting; qu’est-ce qui ne va pas avec ma déclaration si?
Merci.
Je pense que vous manquez simplement la clause do de la boucle for
:
#declare $PICPATH, etc... for file in $PICPATH; do if [ ${file -5} == ".jpeg" -o ${file -4} == ".jpg" ]; then #do some exif related stuff here. else #throw some errors fi done
${file -5}
est une erreur de syntaxe. Peut-être que tu veux dire
${file#*.}
?
En tout cas, mieux vaut faire:
for file in $PICPATH; do image_type="$(file -i "$file" | awk '{print gensub(";", "", $2)}')" case $image_type in image/jpeg) # do something with jpg "$file" ;; image/png) # do something with png "$file" ;; *) echo >&2 "not implemented $image_type type " exit 1 ;; esac done
Si vous ne voulez traiter que des fichiers jpg
, faites:
for file in $PICPATH; do image_type="$(file -i "$file" | awk '{print gensub(";", "", $2)}')" if [[ $image_type == image/jpeg ]]; then # do something with jpg "$file" fi done