曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3310|回复: 0
打印 上一主题 下一主题

如何检测命令行参数为非空?

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2013-11-30 14:50:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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]* 的用法,如果一个参数是全数字的话,不会匹配该项。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-2 22:46 , Processed in 0.084943 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表