我知道 java 所以 do while 和 case 没有问题。我已经阅读了 getopts 的手册页。它已经有些用处了。我真的在寻找“getopts :d:p:nil optname”发生的事情的简单英文解释
而 getopts :d:p:nil optname 做 案例 $optname 在
与 Unix 上的任何其他命令一样,使用一组参数调用 shell 脚本。
getopts
内置命令有助于解析这些参数,将它们分为:
给定循环:
while getopts :d:p:nil optname
没有与之关联的值的标志是-n
,-i
和-l
. 需要值的标志是-d
和-p
。循环依次处理命令行中的每个标志参数。该选项的单个字母存储在 shell 变量$optname
中。如果标志有一个值,那么它在$OPTARG
.
定义选项的字符串的前导冒号表示getopts
不应报告错误,将其留给脚本。
找到选项时,该getopts
命令返回成功 (0);当没有更多选项要处理时,它返回失败(非零,可能为 1)。
这可能是因为它遇到了一个不以破折号开头的参数,或者因为它遇到了特殊的标记参数--
。
另请参见getopt()
C 编程中的函数。shell的功能就是以此为基础的。
有各种扩展来处理多字母选项名称。另请参阅在shell 脚本中使用以获取长短命令行选项getopts
bash
。
中应该有一些有用的信息help getopts
:
getopts:getopts 选择字符串名称 [arg]
解析选项参数。
外壳程序使用 Getopts 将位置参数解析为选项。
OPTSTRING 包含要识别的选项字母;如果一个字母后跟一个冒号,则该选项应该有一个参数,它应该用空格与它分开。
每次调用getopts都会将下一个选项放入shell变量$name中,如果name不存在则初始化name,下一个要处理的参数的索引放入shell变量OPTIND中。每次调用 shell 或 shell 脚本时,都会将 OPTIND 初始化为 1。当一个选项需要一个参数时,getopts 将该参数放入 shell 变量 OPTARG。
...
这OPTSTRING
是序列:d:p:nil
,name
称为optname
。该case
语句将匹配每个不同的选项,而它们被放置在optstring
.