getopts解析命令行参数

内部命令 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))```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,396评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,224评论 19 139
  • [TOC] ##Assoc 显示或修改文件扩展名关联 Assoc [.Ext[=[Filetype]]] .Ex...
    btijjj阅读 3,126评论 0 1
  • 【作者】徐天择 【导师】袁文魁 【作品讲解】 1. 原文 凝碧池 王维 万户伤心生野烟, 百僚何日更朝天。 秋槐叶...
    九天叶澜娜阅读 2,812评论 0 0
  • 明天就是星期四啦,提醒同学们带上科学老师留的作业!! 前两天我跟妈妈一起做的这个作业,首先妈妈先让我找一个小碗,在...
    朱嘉诚11阅读 1,549评论 0 2

友情链接更多精彩内容