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