[英]order parameters in getopts
I have to write very simple script.我必须编写非常简单的脚本。 It should take 2 args -h and -q.它应该需要 2 个参数 -h 和 -q。 Both are optional, -h can be somewhere.两者都是可选的, -h 可以在某处。 So, -h -q should does the same action like -q -h.因此,-h -q 应该执行与 -q -h 相同的操作。 If I pass -a ,or -a -a -a - an error should occurs (I mean exit 1).如果我通过 -a 或 -a -a -a - 应该发生错误(我的意思是退出 1)。 If I pass -a -h -a -a -b.... - it should return "I couldn't recognize -a" + invoke help case.如果我通过 -a -h -a -a -b.... - 它应该返回“我无法识别 -a”+ 调用帮助案例。 So -h has priority.所以 -h 有优先权。 Could you help me?你可以帮帮我吗?
while getopts "hq" OPTION
do
case $OPTION in
h)
echo "Help here!" ;
exit 0;
esac
done
shift $(($OPTIND - 1))
while getopts "hq" OPTION
do
case $OPTION in
q) #quiet - return 0, do nothing.
exit 0;;
*) #If -a or sth
echo "I couldn't recognize args"
echo "Help here"
exit 1
;;
esac
done
This is the correct implementation:这是正确的实现:
#!/usr/bin/env bash
while getopts :hq OPTION
do
case $OPTION in
h) echo "Help here!" ;
exit 0;;
q) echo "quiet do nothing."
exit 0;;
?) echo "I couldn't recognize option [$1]"
exit 1;;
esac
done
shift $((OPTIND - 1))
Note :hq
and ?)
to process incorrect options (-a -b ...)注意:hq
和?)
处理不正确的选项(-a -b ...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.