I am currently trying to write a bash script which helps me step through a directory and check for .jpeg or .jpg extensions on files. I've come up with the following:
#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
Upon execution, bash keeps throwing a an error on the if line: "syntax error near unexpected token `if'.
I'm a completely new to scripting; what is wrong with my if statement?
Thanks.
I think you're just missing the do clause of the for
loop:
#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}
is a syntax error. Maybe you mean
${file#*.}
?
Anyway, better do :
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
If you only want to treat jpg
files, do :
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With