《Advanced Bash-scripting Guide》学习(二):测试脚本调用的参数是否正确
本文所选的例子来自于《Advanced Bash-scripting Gudie》一书,译者 杨春敏 黄毅
#!/bin/bash
E_WRONG_ARGS=85
script_parameters="-a -h -m -z" #-a=all, -h=help等等
if [ $# -ne $Number_of_expected_args ]
then
echo "Usage: `basename $0` $script_parameters" #`basename $0`是这个脚本的文件名
exit $E_WRONG_ARGS
fi
1.$Number_of_expected_args:是这个脚本的期望参数的个数
2.$#是入参的数量(传入的位置参数变量的数量)
3.[ $# -ne $Number_of_expected_args ],-ne 不等于,比较入参数量和期望参数的个数,这句是做一个入参的检查
4.But,在此脚本中,并没有指定期望参数的个数,即$Number_of_expected_args,还有一个问题,这个脚本并没有检查传入参数的值是不是正确,有必要改写一下脚本,以达到预期的结果。
目的:
传入4个指定的参数:-a -h -m -z
改进后的脚本:
#!/bin/bash
E_SUCCESS=0
E_WRONG_ARGS=85
Number_of_expected_args=4
script_parameters="-a -h -m -z"
if [ $# -eq $Number_of_expected_args ]
then
if [ "$1" == "-a" -a "$2" == "-h" -a "$3" == "-m" -a "$4" == "-z" ]
then
echo "`basename $0` parameter is ok."
exit $E_SUCCESS
fi
fi
echo "Usage: `basename $0` $script_parameters"
exit $E_WRONG_ARGS
脚本执行结果
《Advanced Bash-scripting Guide》学习(二):测试脚本调用的参数是否正确的更多相关文章
- advanced bash shell guide读书笔记
http://note.youdao.com/noteshare?id=fc23a679849b4627d131d3ef07c74a71
- 微服务框架学习二:Http调用
1. HTTP接口的意义 二进制接口使用的是java/hessian序列化协议,不能很好的与其他语言通信,虽然hessian也是一种跨语言的通用协议,但很多语言没有很好的实现该协议的产品.所以为了能够 ...
- python学习二十四天函数参数之默认参数
函数参数就是向函数传递参数,可以传递一个,可以是更多个,有的参数有值,有的没有,函数可以设置默认参数,默认参数必须放参数最后面. 1,不传递参数,设置默认参数 def hello(a,b,c='123 ...
- ltp 测试流程及测试脚本分析
LTP介绍 (2011-03-25 18:03:53) 转载▼ 标签: ltp linux 压力测试 杂谈 分类: linux测试 LTP介绍 一.LTP介绍1.简介LTP(Linux Test Pr ...
- 如何将自己的测试脚本分离成PO模式的测试框架
1 PO模式 1.1 PO模式介绍 Page Object Model 测试页面和测试脚本分离,即页面封装成类,供测试脚本调用. (将项目分为page.py和test.py) 测试用例:就是excel ...
- 渗透测试学习 二十、 其他漏洞汇总之PHP相关漏洞
大纲: PHP相关漏洞 JSP相关漏洞 其他漏洞汇总 PHP相关漏洞 文件包含漏洞 php://input等伪协议利用 代码执行漏洞 变量覆盖漏洞 文件包含漏洞 程序开发人员一般会把重复使用的函数写到 ...
- Shell学习之Bash变量详解(二)
Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...
- shell脚本学习(二)
shell传递参数 shell脚本在执行是可以传递参数,脚本内获取参数的格式为:$n,n为一个数字,1为第一个参数,2为第二个参数,以此类推 其中,$0代表了要执行的文件名 实例: 代码如下: #!/ ...
- 【JMeter4.0学习(五)】JMeter对服务器监控测试脚本开发
目录: 下载相关JMeter插件 服务器监控测试脚本开发 附:参考相关文档 本文主要来说一下如何通过JMeter插件来监控服务器CPU.内存.磁盘.网络等相关资源. 一.首先,需要下载相关JMeter ...
随机推荐
- mustache模板技术(转)
项目首页:http://mustache.github.com/ 项目文档:http://mustache.github.com/mustache.5.html Demo: http://mus ...
- Python3.6全栈开发实例[018]
18.车牌区域划分, 现给出以下车牌.根据车牌的信息, 分析出各省的车牌持有量.(升级题) result = {} for car in cars: location = locals[car[0]] ...
- pyhon时间输出
参考博客:http://www.cnblogs.com/xisheng/p/7634125.html http://www.cnpythoner.com/post/89.html 有些时候想要输出,但 ...
- redis的安装配置(转)
一.下载windows版本的Redis 去官网找了很久,发现原来在官网上可以下载的windows版本的,现在官网以及没有下载地址,只能在github上下载,官网只提供linux版本的下载 官网下载地址 ...
- 使用jQuery方法做任务左右栏移动
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 小数据池、is 和 ==的区别
小数据池,在一定情况下出现内存共享(只有int 和 str 才有的) is 和 ==的区别 id() 打印数据的地址 a = 'hello' b = 'hello' print(a = ...
- python3 multiprocessing 模块
多进程 Multiprocessing 模块 multiprocessing 模块官方说明文档 Process 类 Process 类用来描述一个进程对象.创建子进程的时候,只需要传入一个执行函数和函 ...
- Python之 Django 初级
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- 动手动脑:String.equals()的使用方法
public class StringEquals { /** * @param args the command line arguments */ public static void main( ...
- PPA(Personal Package Archives)简介、兴起、使用
1.简介 PPA是Personal Package Archives,个人软件包文档,是默认情况下并未被包含在Ubuntu中的软件的一个集合.通常这些存储库的侧重点是单个的程序,不过他们也可以包含更多 ...