Bash getops参数的问题
目前,我正在编写一个bash脚本,该脚本旨在通过它传递参数 我的getOps行:Bash getops参数的问题,bash,Bash,目前,我正在编写一个bash脚本,该脚本旨在通过它传递参数 我的getOps行: while getopts ":s:d:e:*" opt; do case $opt in s) kb_status ;; d) kb_disable ;; e) kb_enable ;; *) echo "Invalid option: -$OPTARG" ;; esac do
while getopts ":s:d:e:*" opt; do
case $opt in
s)
kb_status
;;
d)
kb_disable
;;
e)
kb_enable
;;
*)
echo "Invalid option: -$OPTARG"
;;
esac
done
主要问题是每当我试图通过脚本时
./myscript.sh -e`
我从我的通配符参数中得到以下消息:
无效选项:-e
但是,当我以
./myscript.sh -ee
或者在参数中有任何第二个字母,它都可以很好地通过。有人能帮我解决这个问题吗?问题是e后面的“:”字符
while getopts ":s:d:e:*" opt; do
“:”告诉getopts在-e选项之后需要一个参数
因此,如果希望脚本只支持-s-d和-e选项,请执行以下操作:
while getopts sde opt; do
问题是e后面的“:”字符
while getopts ":s:d:e:*" opt; do
“:”告诉getopts在-e选项之后需要一个参数
因此,如果希望脚本只支持-s-d和-e选项,请执行以下操作:
while getopts sde opt; do
将
:
放在选项列表中e
之后意味着-e
选项需要一个参数-e
本身缺少参数,-ee
将参数的值设置为e
由于您不使用$OPTARG
执行任何操作,因此看起来您实际上不需要选项的参数,因此不应该在每个选项后面使用:
while getopts ":sde*" opt; do
还不清楚为什么在选项列表的末尾有
*
。这将允许“-*”
,但是案例
块将报告这是一个错误。将:
放在选项列表中e
之后意味着-e
选项需要一个参数-e
本身缺少参数,-ee
将参数的值设置为e
由于您不使用$OPTARG
执行任何操作,因此看起来您实际上不需要选项的参数,因此不应该在每个选项后面使用:
while getopts ":sde*" opt; do
还不清楚为什么在选项列表的末尾有*
。这将允许“-*”
,但案例
块会将其报告为错误