在 bash 中使用 getopts 覆盖无效的选项消息

Afo*_*tos 5 bash shell

我正在使用getopts跟踪提供给我的脚本的选项。但是,我希望能够检测指定的选项是否无效。我可以这样做,但它总是会回显我没有写过的消息。

结果

my.sh: illegal option -- x
Error: Invalid option was specified --
Run Code Online (Sandbox Code Playgroud)

我想要达到的目标

Error: Invalid option was specified --
Run Code Online (Sandbox Code Playgroud)

我的代码片段

while getopts g:r: option; do
        case $option in
                g) guesses=$OPTARG;;
                r) range=$OPTARG;;
                ?) echo "Error: Invalid option was specified -- $OPTARG";;
        esac
done
Run Code Online (Sandbox Code Playgroud)

我怎样才能达到预期的结果?

Eug*_*sca 5

假设您想要两个选项-g-r,以下示例将不会illegal option在传递 时触发消息-x

while getopts ":g :r" option; do
    case $option in
        g) guesses=$OPTARG;;
        r) range=$OPTARG;;
        ?) echo "Error: Invalid option was specified -$OPTARG";;
    esac
done
Run Code Online (Sandbox Code Playgroud)