参数处理(五)测试命令行参数

为了使脚本更严谨,防止运行中由于参数错误产生异常,我们通常除了检查参数的个数外,还需要检查参数的值,若指定的参数是文件或目录,还需要检查它是否存在,或是否可以执行等等。

示例 1

下面的脚本中,我们在脚本的开始检查第一个命令行参数是否存在,如果存在,则继续执行脚本的后续内容;如果不存在,打印使用方法,然后退出脚本:

#! /bin/bash

if [ -z "$1" ]
then
        echo "Usage: `basename $0` one-Arg"
        exit 1
fi

上述脚本的运行效果:

使用示例

注意:如果我们在脚本中的测试参数语句之前,加入了设置 bash 选项 nounset(set -o nounset)的语句,那么当我们运行此脚本并且没有指定命令行参数时,它将会报一个未绑定变量的错误(./testArguments_1.sh: 行 5: $1: 未绑定的变量),而不是显示使用方法信息。

示例 2

假设有一个脚本,它可以接收两个命令行参数,并且第二个参数需要指定一个文件,我们一般就需要在脚本的开始部分先检查指定的这个文件是否存在:

#! /bin/bash

ARGS=2

if [ $# -ne "$ARGS" ]
then
        echo "Usage: `basename $0` param1 filename"
        exit 2
fi

varStr=$1

if [ -f "$2" ]
then
        file_name=$2
else
        echo "File \"$2\" does not exist."
        exit 3
fi

上述示例的使用效果:

使用示例

本文参考自 《Linux Shell命令行及脚本编程实例详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,014评论 19 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,240评论 2 33
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,612评论 9 467
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,974评论 6 342
  • 一个多月的志愿生活,异国他乡,我究竟要选择哪一个国家度过这么长的时间?这个问题让我思考纠结了很久,最终我选择了拥有...
    Irene_9345阅读 613评论 0 0