kornshell 脚本新手所需的代码说明



我知道java,所以做while和case不是问题。我已经阅读了getopts的手册页。它有一些用处。真的,我正在寻找"getopts :d:p:nil optname"正在发生的事情的简单英语解释

而 getopts :d:p:nil optname做 案例$optname 在

shell 脚本是用参数集合调用的,就像 Unix 上的任何其他命令一样。

getopts内置命令有助于解析这些参数,将它们划分为:

  • 没有与其关联的值的标志
  • 具有与其关联的值的标志
  • 非标志参数(通常但不一定是文件名)

给定循环:

while getopts :d:p:nil optname

没有与其关联的值的标志是 -n-i-l 。 需要值的标志是-d-p。 循环依次处理命令行中的每个标志参数。 选项的单个字母存储在 shell 变量 $optname 中。 如果标志采用值,则为 $OPTARG .

定义选项的字符串的前导冒号表示getopts不应报告错误,而将其留给脚本。

当找到选项时,getopts 命令返回成功 (0);当没有更多选项要处理时,它将返回失败(非零,可能是 1)。

这可能是因为它遇到了

一个不以破折号开头的参数,或者因为它遇到了特殊的标记参数--

另请参阅 C 编程中的 getopt() 函数。 壳牌的设施就是基于此。

有各种各样的扩展来处理多字母选项名称。 另请参阅在 shell 脚本中使用getopts bash以获取长命令行和短命令行选项。

help getopts中应该有一些有用的信息:

getopts: getopts optstring name [arg]

分析选项参数。

shell 过程使用 Getopts 来解析位置参数 作为选项。

OPTSTRING 包含要识别的选项字母;如果是字母 后跟一个冒号,该选项应具有参数, 应该用空格与它隔开。

每次调用它时,getopts 都会将下一个选项放在 shell 变量$name,初始化名称(如果不存在),以及 要处理到外壳中的下一个参数的索引 可变选择。 OPTIND 每次 shell 或 调用 shell 脚本。 当选项需要参数时, getopts 将该参数放入 shell 变量 OPTARG 中。

这里OPTSTRING是序列:d:p:nilname称为optnamecase语句将匹配每个不同的选项,而它们被放置在 optstring 中。

最新更新