2.2 KiB
2.2 KiB
简介
分析命令参数,并将其转化为适当的格式。
要解析的内容一般是传入shell函数的参数,解析的次序为从左到右。每个参数都是如下形式之一:
- 短选项。其形式为"-"跟着一个字符,也可以多个短选项都跟在一个"-"后面。
- 长选项。其形式为"--"跟着一个字符串,如不会引起误解长选项名也可以缩写。
- 选项的参数。不以"-"开头且是之前选项的参数。
- 非选项参数。不以"-"开头且不是之前选项的参数,或者在"--"之后跟着的参数。若设置了环境变量POSIXLY_CORRECT或短选项字符串以"+"形状,当找到第一个非选项参数后剩下的部分也都是非选项参数。
每个参数都会生成输出。除了非选项参数,输出的次序和参数的次序是一致的。输出有两种模式:
- 兼容模式(非引用模式)。
- 引用模式。即保留空格、特殊字符和非选项参数。
当在shell脚本中处理输出时,看起来是由不同元素组成的(在大部分shell语言里,这些元素由shift命令逐个处理)。这在引用模式下是不完美的,因为包含空格和特殊字符的元素有可能在意外的位置被拆分。
语法
getopt [options] [--] <optstring> <parameters>
getopt [options] <-o|--options> <optstring> [options] [--] <parameters>
# options和sptstring决定解析的方式
# parameters是要解析的内容
选项
-a, --alternative # 允许以单个'-'开头的长选项。
-l, --longoptions <longopts> # 要识别的长选项(多字符)。长选项之间以逗号分隔,长选项之后跟一个冒号表示有一个参数,长选项之后跟两个冒号表示有一个可选参数。
-n, --name <progname> # 用于报错的名称
-o, --options <shortopts> # 要识别的短选项(单字符)。短选项之后跟一个冒号表示有一个参数,短选项之后跟两个冒号表示有一个可选参数。
-q, --quiet # 禁止报错
-Q, --quiet-output # 不生成正常的输出,但仍然报错
-s, --shell <shell> # 使用shell的引用约定
-T, --test # getopt版本检测
-u, --unquoted # 不要引用输出。注意空格和特殊字符在此模式下会受到严重破坏。