42 lines
2.2 KiB
Markdown
42 lines
2.2 KiB
Markdown
#### 简介
|
||
|
||
分析命令参数,并将其转化为适当的格式。
|
||
|
||
要解析的内容一般是传入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 # 不要引用输出。注意空格和特殊字符在此模式下会受到严重破坏。
|
||
```
|
||
|