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

时间:2013-11-11 15:35:32

标签: shell unix ksh

我知道java所以做的时间和案例都没有问题。我已经阅读了getopts的手册页。它有一些用处。真的我正在寻找关于“getopts:d:p:nil optname”发生的事情的简明英语解释

while getopts :d:p:nil optname
do
 case $optname in

2 个答案:

答案 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:nilname称为optname。当case语句放在optstring中时,{{1}}语句将与每个不同的选项匹配。