加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

getopts命令行参数处理

发布时间:2020-12-15 16:53:57 所属栏目:安全 来源:网络整理
导读:一、getopts 简介 由于shell命令行的灵活性,自己编写代码判断时,复杂度会比较高。使用内部命令 getopts 可以很方便地处理命令行参数。一般格式为: getoptsoptionsvariable getopts 的设计目标是在循环中运行,每次执行循环,getopts 就检查下一个命令行参

一、getopts 简介

  由于shell命令行的灵活性,自己编写代码判断时,复杂度会比较高。使用内部命令 getopts 可以很方便地处理命令行参数。一般格式为:

getoptsoptionsvariable

  getopts 的设计目标是在循环中运行,每次执行循环,getopts 就检查下一个命令行参数,并判断它是否合法。即检查参数是否以 - 开头,后面跟一个包含在 options 中的字母。如果是,就把匹配的选项字母存在指定的变量 variable 中,并返回退出状态0;如果 - 后面的字母没有包含在 options 中,就在 variable 中存入一个,并返回退出状态0;如果命令行中已经没有参数,或者下一个参数不以 - 开头,就返回不为0的退出状态。

二、使用举例

复制代码

catargs

复制代码

getoptsh:msoption

""in
h)
"option:h,value"
"nextargindex:";;
m)
"option:m"
"nextargindex:";;
s)
"option:s"
"nextargindex:";;
?)
"Usage:args[-hn][-m][-s]"
"-hmeanshours"
"-mmeansminutes"
"-smeansseconds"
1;;
esac


"***dosomethingnow***"

复制代码

复制代码

复制代码

./args-h100-ms

复制代码

option:h,value100
argindex:3
option:m
argindex:3
option:s
argindex:4
***somethingnow***

复制代码

复制代码

复制代码

./args-t
./args:illegaloption--t
Usage:args[-hn][-m][-s]
-hmeanshours
-mmeansminutes
-smeansseconds

复制代码

注:

1.getopts 允许把选项堆叠在一起(如 -ms)

2.如要带参数,须在对应选项后加 :(如h后需加参数 h:ms)。此时选项和参数之间至少有一个空白字符分隔,这样的选项不能堆叠。

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读