在使用时的选项字符串中getopts
,来自http://wiki.bash-hackers.org/howto/getopts_tutorial
如果选项字符串的第一个字符是 :(冒号),这通常是无意义的,因为它前面没有选项字母,getopts 切换到“静默错误报告模式”。在生产性脚本中,这通常是您想要的,因为它允许您自己处理错误而不会被烦人的消息干扰。
我想知道以下是什么意思:
“静默报错模式”
“它允许您自己处理错误而不会被烦人的消息打扰”?
你能举一些例子吗?
在使用时的选项字符串中getopts
,来自http://wiki.bash-hackers.org/howto/getopts_tutorial
如果选项字符串的第一个字符是 :(冒号),这通常是无意义的,因为它前面没有选项字母,getopts 切换到“静默错误报告模式”。在生产性脚本中,这通常是您想要的,因为它允许您自己处理错误而不会被烦人的消息干扰。
我想知道以下是什么意思:
“静默报错模式”
“它允许您自己处理错误而不会被烦人的消息打扰”?
你能举一些例子吗?
如果 的第一个字符
optstring
是冒号,getopts
则不会为缺少选项参数或无效选项生成任何诊断消息。如果您确实需要对脚本生成的诊断消息进行更多控制,或者如果用户提供了不稳定的命令行选项,您只是不希望任何内容出现在标准错误流中,这可能会很有用。
在静默报告模式下(带有初始
:
),如果您想提醒用户一个无效的选项,您将不得不?
在传递给 的变量中查找getopts
。同样,对于缺少选项参数,它是一个:
. 这两个错误通常由getopts
它自己处理,但要向用户报告您自己的错误,您需要分别捕获这些错误,以便能够给出正确的诊断消息。在非静默报告模式下,
getopts
对标准错误进行自己的错误报告,您只需捕获*
“任何错误”即可。比较这两个例子:
该
*
案例捕获任何类型的命令行解析错误。上面的
:
案例捕获缺少参数错误,而?
案例捕获无效选项错误(请注意,?
需要转义或引用以匹配文字?
,否则它会匹配任何单个字符)。非静音,
getopts
打印错误消息:静音,
getopts
不会自行打印:因此,使用冒号表示静默模式,我们可以按照我们喜欢的方式在脚本中打印我们自己的错误,而不是固定的消息: