Bash 解析在getopts中接受参数的选项
我有以下程序Bash 解析在getopts中接受参数的选项,bash,getopts,Bash,Getopts,我有以下程序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=
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
及
分别。但是当我做了foo-f bar
我期待
f
bar
bar
但是得到
f
Use this correctly
表示在-f
案例中未正确设置$foo
。我做错了什么?你必须更换
while getopts "fgs" opt; do
与
接受参数的选项后面必须跟一个冒号。仅对于这些选项,getopts
设置OPTARG
变量。您必须替换
while getopts "fgs" opt; do
与
接受参数的选项后面必须跟一个冒号。仅对于这些选项,getopts
设置OPTARG
变量
while getopts "f:gs" opt; do