为了使脚本更严谨,防止运行中由于参数错误产生异常,我们通常除了检查参数的个数外,还需要检查参数的值,若指定的参数是文件或目录,还需要检查它是否存在,或是否可以执行等等。
示例 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命令行及脚本编程实例详解 》