我似乎无法弄清楚为什么我的简单bash脚本解析未声明的标志。这是它的外观:
#!/bin/bash
while getopts "hi" OPTIONS
do
case $OPTIONS in
h)
echo "usage:"
echo "./scriptname.sh [options]"
echo " "
echo "options:"
echo "-i install it"
echo "-h show help menu"
exit 0
;;
i)
echo "this is function -i"
exit 0
;;
\?)
echo "illegal option"
exit
;;
esac
done
发生的事情是,当传递-h和-i时,它工作得很好,但是,如果键入-isomething和-hsomethingelse,它仍将返回为h和i声明的选项,因为它似乎忽略了-之后键入的任何其他内容。我和-h。
基本上,脚本应该仅解析-i和-h并返回“非法选项”,即使选项以-i或-h开头,例如-医院。
我尝试用:将getopts中的两个字母分隔开,但是-i或-h可以这样工作,具体取决于:的位置。
示例
while getopts "h:i:" OPTIONS
do
谢谢