getopts
shell脚本使用getopts来解析位置参数

语法

  getopts optstring name [args]

选项

  optstring : 要识别的选项字符
  如果字符后面跟一个冒号,则该选项
  应该有一个参数,该参数应该用空格分隔。
  冒号(`:')和问号(`?')不能用作选项字符。

每次调用它时,getopts都会将下一个选项放在shell变量名中,如果名称不存在则初始化名称,
以及要处理到变量OPTIND中的下一个参数的索引。
每次调用shell或shell脚本时,OPTIND都会初始化为1。

当一个选项需要一个参数时,getopts将该参数放入变量OPTARG中shell不会自动重置OPTIND; 如果要使用一组新参数,则必须在同一shell调用内多次调用getopts之间手动重置它。

遇到选项结束时,getopts将以大于零的返回值退出。

OPTIND设置为第一个非选项参数的索引,name设置为“?”。
getopts通常会解析位置参数,但如果在args中给出了更多参数,则getopts会解析这些参数。

getopts可以通过两种方式报告错误。如果optstring的第一个字符是冒号,则使用错误报告。
在正常操作中,遇到无效选项或缺少选项参数时,将打印诊断消息。

如果变量OPTERR设置为0,则即使optstring的第一个字符不是冒号,也不会显示任何错误消息。
如果看到无效选项,则getopts会出现“?” 进入名称,如果不是沉默,则打印错误消息并取消设置OPTARG。
如果getopts是静默的,则找到的选项字符将放在OPTARG中,并且不会打印任何诊断消息。
如果找不到必需的参数,并且getopts不是静默的,则会在名称中放置一个问号(“?”),
取消设置OPTARG,并打印一条诊断消息。
如果getopts是静默的,则冒号(`:’)放在名称中,OPTARG设置为找到的选项字符。

getopts是一个内置命令的bash。

getopts 命令实例:

Linux的Bash命令行(A-Z排序)