TTEP.CN > 故障 >

unix shell学习之getopts解析命令行参数

作者: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

就可以看到运行命令后解析参数所得到的结果


  • 推荐阅读
最近发表
赞助商链接