1,

分类: LINUX

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=
MINUTES=
HOURS=
DAYS=
PROCESS=
while getopts :s:m:h:d:p TIMED >/dev/null
do
case $TIMED in
s) SECS=$OPTARG
;;
m) ((MINUTES=$OPTARG*))
;;
h) ((HOURS=$OPTARG*))
;;
d) ((DAYS=$OPTARG*))
;;
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
就可以看到运行命令后解析参数所得到的结果

 
 
2,
echo $*
while getopts ":a:bc" opt
do
        case $opt in
                a ) echo $optarg
                    echo $optind;;
                b ) echo "b $optind";;
                c ) echo "c $optind";;
                ? ) echo "error"
                    exit 1;;
        esac
done
echo $optind
shift $(($optind - 1))
#通过shift $(($optind - 1))的处理,$*中就只保留了除去选项内容(a,b,c )的参数 ,可以在其后进行正常的shell编程处理了。
echo $0
echo $*
 

最新文章

  1. C#多任务并行阶段控制—— Threading.Barrier
  2. linux下安装memcache(php版本5.3)
  3. Android源码网站
  4. 编程精粹:编写高质量的C语言代码———笔记一
  5. Nagios "process_cgivars()" 单字节溢出漏洞
  6. Java NIO使用及原理分析 (四)
  7. HUST - 1599 Multiple
  8. 【朝花夕拾】四大组件之(一)Broadcast篇
  9. vue-cli3.0 项目如何使用sass
  10. 使用chromebook的记录
  11. Python3之set, frozenset记录
  12. python学习第一周(1)
  13. 转--python -- 收发邮件
  14. Fiddler高级用法-抓取手机app数据包
  15. PR合并回写
  16. ORDER BY 高级用法之CASE WHEN
  17. 原创BULLET物理的DEMO
  18. [SHELL]查看端口,文件,服务关系的四个命令netstat,lsof,fuser,nmap
  19. javascript基础-js继承
  20. 一篇Java图片验证码生成的代码

热门文章

  1. 火焰灯menu修改之后,可以实现数遍点击小方块停留在当前页面
  2. 该项目不在c:\ 请确认该项目的位置
  3. 深入解析Hibernate核心接口
  4. 20170301 Excel 导出函数XXL_SIMPLE_API
  5. VS1053 datasheet 解读笔记
  6. About "self"
  7. 用secureCRT ssh登陆不显示用户名和路径解决方案 分类: 软件工具学习 2015-03-18 16:52 36人阅读 评论(0) 收藏
  8. cf 620C Pearls in a Row(贪心)
  9. 尚观Linux最佳入门高清视频教程033/133/253
  10. sharepoint服务器修改密码后出现HTTP Error 503