I need a very simple shell script that processes all images on a folder and changes its size. The image processing is done with gimp script-fu and the only thing that the shell script have to do is the for loop.
I made this:
#!/bin/sh
mkdir processed
for image in `ls`
do
if [ $image != "script.sh" ]
then
if [ $image != "processed" ]
then
gimp -i -b '(let* ( (img (gimp-file-load 1 "1.jpg" "1.jpg")) (drw (gimp-image-get-active-drawable (car img))) ) (gimp-image-scale-full 1 400 300 3) (file-jpeg-save 1 (car img) (car drw) "processed/1.jpg" "1.jpg" 0.6 0 1 1 "" 3 0 0 2) (gimp-quit 0) )'
fi
fi
done
This code works but, in the script-fu code I put 1.jpg as the file name and, of course, I want that there appears the value of the $image variable. My shell scripting knowledge is limited and I'm lost with the way I have to put the variable inside the command.
Can you help me? Thanks for your time :)
Use
for image in *
instead ofls
.To pass the variable to the Gimp script and preserve the quotes for Gimp, you'll need to use double quotes for the outer ones and escape the inner quotes:
You can also simplify your script:
If you want to include more extensions: