back toc next

Handling Command Line Options

Solution 1 -- The hand crafted version

#!/bin/sh

verbose=off
filename=

while [ $# -gt 0 ]; do
    case "$1" in
        -v) verbose=on
            ;;
	-f) if [ -f "$2" ]; then
		filename=$2
		shift
	    else
		echo >&2 no such file \"$2\".
		exit 1
	    fi
	    ;;
        --) break
            ;;
        -*) echo >&2 "usage: $0 [-v] [-f file] [file ...]"
            exit 1
            ;;
        *)  break
            ;;
    esac
    shift
done

#the trailing arguments are now in $1, $2, $3,...