我正在使用getopts
来跟踪为我的脚本提供的选项。但是,我希望能够检测指定的选项是否无效。我可以做到这一点,但它总会回应我没有写过的信息。
结果
my.sh: illegal option -- x
Error: Invalid option was specified --
我想要实现的目标
Error: Invalid option was specified --
我的代码片段
while getopts g:r: option; do
case $option in
g) guesses=$OPTARG;;
r) range=$OPTARG;;
?) echo "Error: Invalid option was specified -- $OPTARG";;
esac
done
如何达到预期效果?
答案 0 :(得分:2)
假设您需要两个短选项-g
和-r
,以下示例在传递illegal option
时不会触发-x
消息:< / p>
while getopts ":g :r" option; do
case $option in
g) guesses=$OPTARG;;
r) range=$OPTARG;;
?) echo "Error: Invalid option was specified -$OPTARG";;
esac
done
答案 1 :(得分:1)
通过在标志之前添加:
,我告诉getopts
我想要控制不在我设置的列表中的标志。
答案 2 :(得分:0)
在bash中,您可以在开始解析之前将OPTERR设置为0:
OPTERR=0
while getopts 'option string' opt; do
echo "opt = $opt"
echo "OPTIND = $OPTIND"
echo "OPTARG = $OPTARG"
echo "OPTERR = $OPTERR"
done