TIL how to parse flags passed to a bash script, using the built-in function
getopts
.
Let's say you have a script named maintenance.sh
, to which you'd like to pass
some flags:
-e
-d
-f filename
These flags can be parsed in the script, like so:
while getopts edf: flag
do
case "${flag}" in
e) echo "Got flag -e";;
d) echo "Got flag -d";;
f) echo "Got flag -f with respective option ${OPTARG}";;
esac
done
Notice in the arguments of getopts
that f
is the only flag that is followed
by :
, which is used to indicate that the flag is followed by a respective
value.
Script can then be called as sh maintenance.sh -e
or sh maintenance.sh -e -f file.json
, for example.
See: