#!/bin/bash # This script takes any number of image filenames as arguments and # creates a thumbnail image for each one. The thumbnail image has the # same name as the original file, except with _thumb inserted before # the file extension. # some pictures of me to use with this script are posted as pictures.tar # if no arguments were given, print a usage message to stderr and exit if [ $# -eq 0 ] then echo "usage: $0 FILE [FILE...]" 1>&2 exit 1 fi for pic in $@ # loop over the arguments do if [ ! -e $pic ] # check if the image file exists then echo "error: $pic does not exist" 1>&2 continue # just like continue in Java fi # ${pic%.*} gives us pic with everything from the final . to the # end deleted. For example, "flower.png" becomes "flower", and # "green.lake.jpg" becomes "green.lake". This is because .* # matches a . followed by any number of characters, and % deletes # the shortest such match from the end. # ${pic##*.} gives us pic with everything from the beginning to # the final . deleted. For example, "flower.png" becomes "png", # and "green.lake.jpg" becomes "jpg". This is because *. matches # any number of characters followed by a ., and ## deletes the # longest such match from the beginning. convert -thumbnail 100x100 $pic ${pic%.*}_thumb.${pic##*.} done