hb_sz 发表于 2018-8-29 10:56:29

【转】使用shell的getopts处理参数

  1、getopts使用方式:
  g e t o p t s一般格式为:
  getopts option_string variable
  g e t o p t s读取o p t i o n s t r i n g,获知脚本中使用了有效选项。
  g e t o p t s查看所有以连字符开头的参数,将其视为选项,如果输入选项,将把这与o p t i o n s t r i n g对比,如果匹配发现,变量设置为O P T I O N,如果未发现匹配字符,变量能够设置为?。重复此处理过程直到选项输入完毕。
  g e t o p t s接收完所有参数后,返回非零状态,意即参数传递成功,变量O P T I O N保存最后处理参数,一会儿就可以看出处理过程中这样做的好处。
  2、使用getopts指定变量取值:
  有时有必要在脚本中指定命令行选项取值。g e t o p t s 为此提供了一种方式,即在o p t i o n s t r i n g中将一个冒号放在选项后。例如:
  getopts ahfvc: OPTION
  上面一行脚本指出,选项a、h、f、v可以不加实际值进行传递,而选项c必须取值。使用选项取值时,必须使用变量O P TA R G保存该值。如果试图不取值传递此选项,会返回一个错误信息。错误信息提示并不明确,因此可以用自己的反馈信息屏蔽它,方法如下:将冒号放在o p t i o n s t r i n g开始部分。
  while getopts :ahfgvc: OPTION
  在c a s e语句里使用?创建一可用语句捕获错误。
  3、getopts使用举例
#!/bin/sh  

  
usage()
  
{
  
    echo `basename $0` [-a] [-b] args
  
    exit 0
  
}
  

  
while getopts "ab:" options
  
do
  
    case ${options} in
  
      a)
  
            echo "you enter -a as an option"
  
            ;;
  
      b)
  
            echo "you enter -b as an option"
  
            echo "/$OPTARG is $OPTARG"
  
            ;;
  
      /?)
  
            usage
  
            ;;
  
    esac
  
done


页: [1]
查看完整版本: 【转】使用shell的getopts处理参数