I have the following program foo, that can take one of three optional flags, f, g, or s:
usage() { echo "Use this correctly" } while getopts "fgs" opt; do case $opt in f) echo f foo="$OPTARG" echo $foo ;; g) echo g foo="g" ;; s) echo s foo="s" ;; esac done if [ -z "$foo" ] then usage exit fi echo $foo exit When I do foo -g or foo -s I get the expected outputs:
g g and
s s respectively. But when I do foo -f bar I expect
f bar bar but get
f Use this correctly indicating that $foo is not being set properly in the -f case. What am I doing wrong?