美文网首页Shell 脚本成长笔记
参数处理(五)测试命令行参数

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

作者: 赵者也 | 来源:发表于2017-05-03 23:17 被阅读2次

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

    示例 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命令行及脚本编程实例详解

    相关文章

      网友评论

        本文标题:参数处理(五)测试命令行参数

        本文链接:https://www.haomeiwen.com/subject/vgqktxtx.html