getopts
is a nice way to get simple arguments, rather than having to write your own code to get them.
Let’s start with an example.
match=0
dev=0
verbose=0
file=
while getopts mdvf: arg
do
case $name in
m) match=1 ;;
d) dev=1 ;;
v) verbose=1 ;;
f) file="$OPTARG" ;;
?) printf "Usage: %s: [-m] [-dv] [-f file]\n" $0
exit 1 ;;
*) echo "An incorrect argument was specified" ;;
esac
done
In here we have set our default values for design
and dev
. We have then our while getopts
argument where we specify the arguments that will be accepted (where you see mdvf:
).
The :
after the f
means that one gets an argument, in this case the file name. The option for the argument is obtained in the $OPTARG
variable within the case
.
Speaking of which, list all of the arguments in the case
section. There are two special arguments:
?
means nothing was given. Useful for giving the usage explanation.*
means an unknown argument was given.
For more information, see:
man getopts
- Quick how to from mkssoftware.com