У меня есть следующая программа foo
, которая может принимать один из трех необязательных флагов: f
, g
или 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
Когда я делаю foo -g
или foo -s
, я получаю ожидаемые результаты:
g
g
и
s
s
соответственно. Но когда я делаю foo -f bar
, я ожидаю
f
bar
bar
но получить
f
Use this correctly
указывает на то, что $foo
не устанавливается должным образом в случае -f
. Что я делаю не так?