LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1346|回复: 8

判断是否相等返回值问题

[复制链接]
发表于 2008-11-7 21:49:51 | 显示全部楼层 |阅读模式
代码如下
#! /bin/bash
clear
echo ""
let a=100
let b=200
test $a -ne $b
echo "$?"

a!=b为真阿,应该返回非零值嘛,可是显示的是0

#! /bin/bash
clear
echo ""
let a=100
let b=200
test $a -eq $b
echo "$?"
显示的却是1。难道a=b是真的?这不是搞笑吗?
发表于 2008-11-8 08:41:25 | 显示全部楼层
楼主的逻辑有问题。。
回复 支持 反对

使用道具 举报

发表于 2008-11-8 15:08:05 | 显示全部楼层
简单地说,shell 里 0 为真,没错
回复 支持 反对

使用道具 举报

发表于 2008-11-8 18:22:23 | 显示全部楼层
楼主,在你目前的思维情形下,你执着于把返回值为0和“假”连线,将返回值为1和“真”连线。而实际上,与“假”连线的应该是零值表达式,与“真”连线的是非零表达式

简单一句话:从概念角度,返回值 != 表达式

不要像楼上同学那样将两个概念混为一谈。

BTW. 能搞明白这个问题当然很好啦,但是搞不明白也不用太过于执念。test 或者 [ 基本上都和 if 或者 while/until 等控制结构合用,所以只要大声读出测试条件,很自然写出代码。
回复 支持 反对

使用道具 举报

发表于 2008-11-9 07:08:46 | 显示全部楼层
呵呵,在lz没搞清楚之前,混淆一下也未尝不可,至少不要钻 1==true 的牛角尖。
code写久了, 自然就清楚了。
回复 支持 反对

使用道具 举报

发表于 2008-11-16 12:12:36 | 显示全部楼层
shell 中0为真,非零值为假
回复 支持 反对

使用道具 举报

发表于 2008-11-16 21:58:55 | 显示全部楼层
我很耐心的,来一个我说一个:“LS的思路是错的。”
回复 支持 反对

使用道具 举报

发表于 2008-11-17 12:07:17 | 显示全部楼层
楼主不必在意,这是任何一个在C思维下转入shell 最经常会范错的地方

多code就行了
回复 支持 反对

使用道具 举报

发表于 2008-11-17 12:51:25 | 显示全部楼层
Post by handicape;1909701
楼主不必在意,这是任何一个在C思维下转入shell 最经常会范错的地方

多code就行了


的确啊,我一开始也纳闷呢!
回复 支持 反对

使用道具 举报

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

本版积分规则

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