曲径通幽论坛

标题: 如何检测命令行参数为非空? [打印本页]

作者: beyes    时间: 2013-11-30 14:50
标题: 如何检测命令行参数为非空?
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]* 的用法,如果一个参数是全数字的话,不会匹配该项。






欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2