Bash getopt接受多个参数

Bash getopt接受多个参数,bash,parameters,getopt,Bash,Parameters,Getopt,我正在使用getopt编写一个脚本来解析长参数和短参数。到目前为止,我的解决方案只接受一个参数。有没有办法使此解决方案接受多个参数(例如,示例中的“THING”和“COMIC”)呢 代码: 函数用法{ printf“用法:%s:[-abh c][--ape--bean--comic--help]”>&2 出口2 } 设置--$(getopt-n$0-u-a--longoptions=“apebean漫画:帮助”“abc:h”“$@”)用法 [“$#”-等式0]&用法 而[“$#”-gt 0];做

我正在使用getopt编写一个脚本来解析长参数和短参数。到目前为止,我的解决方案只接受一个参数。有没有办法使此解决方案接受多个参数(例如,示例中的“THING”和“COMIC”)呢

代码:

函数用法{
printf“用法:%s:[-abh c][--ape--bean--comic--help]”>&2
出口2
}
设置--$(getopt-n$0-u-a--longoptions=“apebean漫画:帮助”“abc:h”“$@”)用法
[“$#”-等式0]&用法
而[“$#”-gt 0];做
案件“$1”
#长期选择
--(猿猴)东西class='ape';移位;;
--bean)THING='bean';移位;;
--滑稽的,滑稽的;漫画URL=“$2”;移位;;
--帮助)使用;打破
-a) “人猿”;移位;;
-b) “豆”;移位;;
-c) “是的”;漫画URL=“$2”;移位;;
-h) 用法;打破
--)转移;打破
-*)用法;;
*)打破;;
以撒
转移
完成
如果[!-z$THING];然后
回声“东西:$THING”
fi
如果[$COMIC=='yes'];然后
$BROWSER$COMIC|URL | echo“抱歉,找不到您的漫画!”
fi

可能还有其他问题,但我马上看到的是您写了:

--ape)   THING='ape';shift;;
(对于其他情况也是如此),然后执行以下操作:

shift
案件办完后。这意味着在
--ape
和许多其他情况下,您将
移位
两次


只需移除案例中的
shift
,并在
esac
之后为每个案例进行一次移位,当然了!这很有魅力,非常感谢你:D
shift