getopts 的坑
2016-05-13 20:50
288 查看
getopts 真的比较坑啊。。。。语言描述不同,以下用例子来体现,对脚本文件 ./test.sh
此时。如果输入是:
./test.sh -a -c -k -b
输出将是:
> a
> c
> Illege args -k
> wrong input
> no arg for -b option
> wrong input
-k 是非法选项,报错后将OPT设置为 ? 。-b 之后没有选项值,则不符合要求,报错后将OPT设置为 ?
如果输入是:
./test -a -b -c
注意:输出将是很坑的!!!!!!!!!!!!!
> a
> b : -c
这是 -b 选项将后面的 -c 选项当做了自己的值。。。然后就收了。然后也不报错。。。。看到这里心里也是醉了
此外要注意,在指定 getopts 的选项参数之前如果有冒号。则整个过程变为静默模式,也就是该报错的地方不报错,直接将取到的选项设置为 ? 号。(上面例子中的红色全部不输出)
#注意,选项一开始没有冒号 while getopts ab:c OPT; do case $OPT in a) echo "a";; b) echo "b : $OPTARG";; c) echo "c";; \?) echo "wrong input";; esac done</span>
此时。如果输入是:
./test.sh -a -c -k -b
输出将是:
> a
> c
> Illege args -k
> wrong input
> no arg for -b option
> wrong input
-k 是非法选项,报错后将OPT设置为 ? 。-b 之后没有选项值,则不符合要求,报错后将OPT设置为 ?
如果输入是:
./test -a -b -c
注意:输出将是很坑的!!!!!!!!!!!!!
> a
> b : -c
这是 -b 选项将后面的 -c 选项当做了自己的值。。。然后就收了。然后也不报错。。。。看到这里心里也是醉了
此外要注意,在指定 getopts 的选项参数之前如果有冒号。则整个过程变为静默模式,也就是该报错的地方不报错,直接将取到的选项设置为 ? 号。(上面例子中的红色全部不输出)
#注意,选项一开始有冒号 while getopts :ab:c OPT; do case $OPT in a) echo "a";; b) echo "b : $OPTARG";; c) echo "c";; \?) echo "wrong input";; esac done</span>
相关文章推荐
- 什么是Shell?Shell脚本基础知识详细介绍
- 学习shell脚本之前的基础知识[图文]
- 用内置变量调试shell脚本的方法
- 自己常用的一些shell脚本分享
- 用Shell脚本快速搭建Ubuntu下的Nodejs开发环境
- MAC中用Shell脚本批量裁剪各种尺寸的App图标
- Shell实现系统时间和BIOS时间同步校准脚本分享
- Linux下实现SNMP一键安装的Shell脚本
- PHP教程之PHP中shell脚本的使用方法分享
- 实现MySQL定时批量检查表repair和优化表optimize table的shell脚本
- Ubuntu、Linux Mint一键安装Chrome浏览器的Shell脚本分享
- shell脚本监控系统负载、CPU和内存使用情况
- windows下写的shell脚本在linux执行出错的解决办法
- 写出健壮Bash Shell脚本的一些技巧总结
- shell脚本中执行时提示“没有那个文件或目录”的解决办法
- shell脚本实现随机生成10个8位密码
- 把mysql查询结果保存到文件的shell脚本
- 一个测试下载速度的shell脚本
- Shell脚本实现的基于SVN的代码提交量统计工具
- CentOS下redis自启动shell脚本