zoukankan      html  css  js  c++  java
  • shell脚本中关于getopts的使用方法

    • 例子:

      while getopts ":e:s:pd:l" arg; 
      do
          case $arg in
          e)
              ghs_env=$OPTARG
              ;;
          s)
              ghs_service=$OPTARG
              ;;
          p)
              proxy=`sed '/^PROXY=/!d;s/.*=//' config.properties`
              ;;
          d)
              dir_path=$OPTARG
              ;;
          l)
              if [ -d "log" ]; then
                      rm -r log
                      mkdir log
              else
                      mkdir log
              fi
              log_dir=$(cd `dirname $0`; pwd)/log
              ;;
          ?)
              echo "Usage: $(basename $0) [-e somevalue] [-s somevalue] [-p somevalue] [-d somevalue]" 1>&2
              exit 1
              ;;
              esac
      done
    • getopts有两个参数,第一个参数是一个字符串,包括字符和" : ", 每一个字符都是一个有效的选项,如果字符后面带有" : ", 表示这个字符有自己的参数。getopts从命令中获取这些参数,并且删去了" - ", 并将其赋值在第二个参数中,即"OPTARG"中,在例子中,$OPTARG存储相应选项的参数。

    •  while getopts ":e:s:pd:l" arg;  这行代码中,第一个冒号表示忽略系统报错信息,使用自定义的报错信息;字符后面的冒号表示该选项必须自己的参数。

      • 第一个冒号存在时(自定义报错信息):

        1. 当指定的参数不存在时,variable设置为" : ", 对应的$OPTARG为此时的选项 (这个尚未搞明白是什么意思)

        2. 当指定的选项是带参数的而没有提供参数或是非法选项(指定的选项没有定义),variable设置为" ? ", 对应的$OPTARG为此时的选项

      • 第一个冒号不存在时(会按照系统的定义报错):

        1. 指定了非法选项(不存在的选项或者说是没有定义的选项),会报错:scriptname:illegal option — 选项

        2. 选项需要参数但没有指定,会报错:scriptname: option requires an argument –选项


      • 单个字符后面接一个冒号,表示选项必须自己的参数,参数可以紧跟选项后或者以空格隔开,该参数的指针赋给OPTARG

      • 单个字符后面接两个冒号表示该选项必须自己的参数且参数紧跟选项后不能以空格隔开(我试过,感觉有没有空格都可以,因此,我觉得如果要加参数,字符后只要写一个冒号就可以了),该参数的指针赋给OPTARG

  • 相关阅读:
    综合疑问
    MySQL查询优化器工作原理解析
    mysql配置文件参数详解
    MySQL查看、创建和删除索引的方法
    删除maven仓库中的lastUpdate文件
    加密算法的概述
    .bat脚本基本命令语法
    spring-core中@Order和Ordered接口的源码解析说明
    spring-context中@Profile注解的源码解析说明
    spring-context中@Bean的源码解析说明和它与其他注解的结合使用
  • 原文地址:https://www.cnblogs.com/dazhan/p/9815279.html
Copyright © 2011-2022 走看看