美文网首页
getopts解析命令行参数

getopts解析命令行参数

作者: KevinCool | 来源:发表于2016-06-13 10:39 被阅读102次

    内部命令 getopts 可以很方便地处理命令行参数。一般格式为:getopts options variable

    getopts 的设计目标是在循环中运行,每次执行循环,getopts 就检查下一个命令行参数,并判断它是否合法。即检查参数是否以 - 开头,后面跟一个包含在 options 中的字母。

    如果是,就把匹配的选项字母存在指定的变量 variable 中,并返回退出状态0;如果 - 后面的字母没有包含在 options 中,就在 variable 中存入一个 ,并返回退出状态0;如果命令行中已经没有参数,或者下一个参数不以 - 开头,就返回不为0的退出状态。

    如果在需要参数的选项之后没有找到参数,它就在给定的变量中存入 ? ,并向标准错误中写入错误消息。否则将实际参数写入特殊变量 :OPTARG

    另外一个特殊变量:OPTIND,反映下一个要处理的参数索引,初值是 1,每次执行 getopts 时都会更新。

    #参数后面有冒号表示输入参数后面还有参数值,参数值被保存在OPTARG中
    while getopts ns:t:A:b:o:p:u:m:N:d: c; do
        case $c in
        n) BeNice=N;;
        s) SysGov="-s $OPTARG";;
        t) TimeOut=$2; TimeOut=$((TimeOut / Delay));;
        A) args=$OPTARG;;
        b) batchFile=$OPTARG;;
        o) OutFile=$OPTARG;;
        p) PageNumber=$OPTARG;;
        u) rDir=~$OPTARG/;;
        d) delay=$OPTARG;;
        m) memo="-m "$OPTARG;;
        N) Notify=$OPTARG;;
    #   ?) echo "$Usage"; exit 2;;
        esac
    done
    #最后将这些参数移位
    shift $((OPTIND - 1))```

    相关文章

      网友评论

          本文标题:getopts解析命令行参数

          本文链接:https://www.haomeiwen.com/subject/zplydttx.html