Q: 如何检测命令行参数为非空?
A: 如果一个脚本需要检测命令行参数,那么首先需要检测命令行参数是否为非空。常用的测试选项为 -n ,如下脚本示例:
[Bash shell] 纯文本查看 复制代码 #!/bin/sh
if [ -n "$1" ]
then
echo -n "option is not null, you input is \""
echo $1\"
else
echo "option is null"
fi
exit
运行输出:
[beyes@groad shell]$ ./cmdnull.sh
option is null
[beyes@groad shell]$ ./cmdnull.sh hello
option is not null, you input is "hello"
我们还可以使用 case 来判断,这看上去也许会更好,因为它可以测试多种情况,比如:
[Bash shell] 纯文本查看 复制代码 #!/bin/sh
E_WRONGPRAM=6
case "$1" in
"") echo "input null";;
*[!0-9]*) echo "Usage: `basename $0` file-name"; exit $E_WRONGPRAM;;
*) echo $1;;
esac
这里可以稍微注意 *[!0-9]* 的用法,如果一个参数是全数字的话,不会匹配该项。
|