2013-10-20
作者:liyongchao89
unix shell学习之getopts解析命令行参数
getopts命令内置于shell中,可以获取由单个字符所指定的有效命令行参数,单个字符有一个‘ - ’号或‘ + ’号。
简单的说,比如运行命令:
iptables -t nat -A POSTROUTING -p tcp -o eth0 -s 192.168.2.0/24 -j SNAT --to public_ip
它实现了内网ip转换成公网ip访问外网的功能,但是这么多的参数怎么解析的呢,getopts就是实现像这种参数的解析。
所以getopts是一个非常实用的工具,在你编写脚本时,能够很方便的帮助你解析命令行参数,但是它具体是怎么解析的呢,
如脚本提供命令行参数: -s 5 -m 10 -d 2 -p my_shell
解析时使用 getopts :s:m:h:d:p
这表明对于指定的项 s、m、d、p等如果在每个开关前加入“:”表示 这个开关项需要一个参数。
具体见代码my_shell.sh 它实现了参数:天 时 分 秒 等全部转换成秒的功能如下:
点击(此处)折叠或打开
SECS=0
MINUTES=0
HOURS=0
DAYS=0
PROCESS=0
while getopts :s:m:h:d:p TIMED 2>/dev/null
do
case $TIMED in
s) SECS=$OPTARG
;;
m) ((MINUTES=$OPTARG*60))
;;
h) ((HOURS=$OPTARG*3600))
;;
d) ((DAYS=$OPTARG*86400))
;;
p) PROCESS=$OPTARG
;;
?) usage
exit;
;;
esac
done
((TOTALSECS=$SECS+$MINUTES+$HOURS+$DAYS))
echo "total seconds:$TOTALSECS"
此时 运行命令:bash my_shell.sh -s 20 -m 3 -h 5 -d 8 -p my_shell
就可以看到运行命令后解析参数所得到的结果
上古密约九天诛魔最新版下载v4.0.2 安卓版
其它手游 306.8M
下载失落魔渊官方手机版(legend of summoners)下载v1.1.93 安卓版
卡牌对战 500.7M
下载魔法时代内置菜单最新版(Age of Magic)下载v2.36.1 安卓版
策略塔防 164.1M
下载短程极速赛车破解版下载v5.1.1 安卓版
赛车竞速 106.4M
下载三国霸王大陆内购版下载v1.30 安卓无限元宝版
策略塔防 127.0M
下载小森生活日服版正版官方安装下载v2.0.12 安卓版
经营养成 2.0M
下载枫之谷m国际服ios版下载v2.290.5149 iphone手机版
其它手游 401.8M
下载魔法纪录魔法少女小圆外传日服(魔法少女小圆Magia Exedra日服)下载v2.2.0 安卓版
角色扮演 241.7M
下载腾讯英雄联盟手游下载v6.2.0.8712 安卓官方版
下载
见习骷髅王手游下载v1.0.4 安卓版
下载
钢岚手游官方版正版下载v2.24.0 安卓版
下载
宝宝玩对比游戏下载v9.87.00.00 安卓版
下载
宝宝巴士宝宝手指画下载v9.88.00.00 安卓版
下载
命运群星手游下载v1.0.55104430 安卓版
下载
仙遇免费官方正版下载v1.9.2 安卓版
下载
lovinhouse官方最新版本下载v2.8.5 手机版
下载