免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 12398 | 回复: 17
打印 上一主题 下一主题

shell 脚本下0为真1为假吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-15 19:17 |只看该作者 |倒序浏览
shell 脚本下0为真1为假吗?
let a=12
let b=12
test $a -eq $b
echo $?
最后输出为0,为什么?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2008-10-15 19:42 |只看该作者

回复 #1 zhaoruisheng 的帖子

这个你要看 test(1) 的文档

论坛徽章:
0
3 [报告]
发表于 2008-10-15 20:10 |只看该作者
test(1)的文档?那是什么东东呀?高手指点下阿

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2008-10-15 20:21 |只看该作者
原帖由 zhaoruisheng 于 2008-10-15 20:10 发表
test(1)的文档?

please man 1 test

论坛徽章:
0
5 [报告]
发表于 2008-10-15 20:43 |只看该作者
谢谢了,马上去man

论坛徽章:
0
6 [报告]
发表于 2008-10-15 20:52 |只看该作者
man 只讲了test的用法,没说为什么为真时输出是0呀?这是怎么一回事呀?

论坛徽章:
0
7 [报告]
发表于 2008-10-15 23:03 |只看该作者
(转)
先谈$这个玩意,很有意思, 很多命令不带返回值
也就是说执行完了就完了,没有任何反馈,你也不知道执行对了还是错了
举个例子
test 2 -gt 1   (判断2是否大于一)
如果直接执行,无返回值
执行完之后,再执行
echo $?

看看,它就会说
0
0代表执行完毕,没有错误
不信你把这个表达式换成
test 2 -gt 3

echo $?
他就会显示
1
非零即是错误。

顺带看看test的其它比较用法
test int1 -eq int2 判断是否相等
test int1 -ne int2 判断是否不等
test int1 -lt int2 判断是否小于
test int1 -le int2 判断是否不小于
test int1 -gt int2 判断是否大于
test int1 -ge int2 判断是否不大于

test判断逻辑表达式
test 条件1 -a 条件2   条件一和2全部成立
test 条件1 -o 条件2   条件1或2成立一个即可

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
8 [报告]
发表于 2008-10-15 23:41 |只看该作者
原帖由 zhaoruisheng 于 2008-10-15 20:52 发表
man 只讲了test的用法,没说为什么为真时输出是0呀?这是怎么一回事呀?

这是 Unix/Linux 下的约定,Shell 也是这么解释的。

论坛徽章:
0
9 [报告]
发表于 2008-10-16 07:35 |只看该作者
谢谢两位了,有些明白了。

论坛徽章:
0
10 [报告]
发表于 2008-10-17 11:54 |只看该作者

回复 #9 zhaoruisheng 的帖子

Linux 下的返回值都是成功为0,我以前学java 的时候,一般都不这样的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP