Shell 脚本成长笔记

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

2017-05-03  本文已影响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命令行及脚本编程实例详解

上一篇下一篇

猜你喜欢

热点阅读