本文所选的例子来自于《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》学习(二):测试脚本调用的参数是否正确的更多相关文章

  1. advanced bash shell guide读书笔记

    http://note.youdao.com/noteshare?id=fc23a679849b4627d131d3ef07c74a71

  2. 微服务框架学习二:Http调用

    1. HTTP接口的意义 二进制接口使用的是java/hessian序列化协议,不能很好的与其他语言通信,虽然hessian也是一种跨语言的通用协议,但很多语言没有很好的实现该协议的产品.所以为了能够 ...

  3. python学习二十四天函数参数之默认参数

    函数参数就是向函数传递参数,可以传递一个,可以是更多个,有的参数有值,有的没有,函数可以设置默认参数,默认参数必须放参数最后面. 1,不传递参数,设置默认参数 def hello(a,b,c='123 ...

  4. ltp 测试流程及测试脚本分析

    LTP介绍 (2011-03-25 18:03:53) 转载▼ 标签: ltp linux 压力测试 杂谈 分类: linux测试 LTP介绍 一.LTP介绍1.简介LTP(Linux Test Pr ...

  5. 如何将自己的测试脚本分离成PO模式的测试框架

    1 PO模式 1.1 PO模式介绍 Page Object Model 测试页面和测试脚本分离,即页面封装成类,供测试脚本调用. (将项目分为page.py和test.py) 测试用例:就是excel ...

  6. 渗透测试学习 二十、 其他漏洞汇总之PHP相关漏洞

    大纲: PHP相关漏洞 JSP相关漏洞 其他漏洞汇总 PHP相关漏洞 文件包含漏洞 php://input等伪协议利用 代码执行漏洞 变量覆盖漏洞 文件包含漏洞 程序开发人员一般会把重复使用的函数写到 ...

  7. Shell学习之Bash变量详解(二)

    Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...

  8. shell脚本学习(二)

    shell传递参数 shell脚本在执行是可以传递参数,脚本内获取参数的格式为:$n,n为一个数字,1为第一个参数,2为第二个参数,以此类推 其中,$0代表了要执行的文件名 实例: 代码如下: #!/ ...

  9. 【JMeter4.0学习(五)】JMeter对服务器监控测试脚本开发

    目录: 下载相关JMeter插件 服务器监控测试脚本开发 附:参考相关文档 本文主要来说一下如何通过JMeter插件来监控服务器CPU.内存.磁盘.网络等相关资源. 一.首先,需要下载相关JMeter ...

随机推荐

  1. QSystemSemaphore 系统级信号量

    在之前的一篇文章中,我们讲过了QSemaphore类,其可以用于同步多线程.而今天要讲到的这个类,根据名字就可以猜测到,其可以在整个系统中使用,即它既可以用于多线程,也可以用于多线程.当然,这也意味着 ...

  2. WIN文件放到LINUX中无法CAT过滤的解决方法

    有个WIN文件放到LINUX服务器上处理的时候,由于编码的问题,导致无法过滤,此时需要对文件进行处理 cat file | tr -s "\r" "\n" &g ...

  3. pycharm 用鼠标滚动调整字体大小

  4. redis3.2.11单机多实例集群部署并测试连接情况

    配置准备: redis3.2.11安装配置规划 机器 192.168.169.135(本机虚拟机) 系统 Red Hat Enterprise Linux Server release 6.4 (Sa ...

  5. pandas(零)数据结构

    pandas的两个主要的数据结构: Series series是一种类似于一维数组的对象,它由一组数据(NumPy数组类型的数据)和一组与之相关的数据标签(索引)组成. from pandas imp ...

  6. easyPieChart 使用小记

    在使用的时候本来想在获取数据的时候,再放入percent值,但死活不出来进度条条了,只能无奈设置默认100.求教有木正确方式? $("#demo-pie-1").attr(&quo ...

  7. loadrunder脚本篇——执行操作系统命令

    思路: 用loadrunner system()函数 函数原型: int system( const char *string ); 示例一:在指定目录下创建指定文件 Action() { char ...

  8. 012_Eclipse中使用 HDFS URL API 事例介绍

    本事例其实和使用hdfs FileSystem API差不多,FileSystem API也是通过解释成URL在hdfs上面执行的,性质相同,但是实际中用 的fFileSystem会多一点,源码如下: ...

  9. HTML学习笔记(下)

    表格标签 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3 ...

  10. Django组件 用户认证,form

    auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户输入的密码,这样一来就要自己编写大量的代码 ...