Linux shell if语句

1ifcp"$1""#$1"2then3echo"$?"4else5echo"Error"6fi这个例子中,为什么cp成功了会继续执行阿?cp成功了会返回0阿,if不是在... 1 if cp "$1" "#$1"
2 then
3 echo "$?"
4 else
5 echo "Error"
6 fi
这个例子中,为什么cp成功了会继续执行阿?cp成功了会返回0阿,if不是在非零才会执行then么?0不就执行else了么?
很疑惑...
展开
 我来答
love_aiqiu_123
2008-12-02
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
先谈$这个玩意,很有意思, 很多命令不带返回值
也就是说执行完了就完了,没有任何反馈,你也不知道执行对了还是错了
举个例子
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成立一个即可
shell脚本下真假不是由整数决定的,
而必须进行了某个测试,例如-eq -d等;
也就是说一个表达式,无论是数字、字符串,test的结果都是true,例如
S=0
test $S
无论S取值什么都是true
但是如果 test $S -eq $S2,即用到了test所支持的表达式有了真假

最后,test也是一个程序,当他test的内容是true时它返回值是0,也就是你echo $?的结果

linux下的真假与linux下shell中的真假,分清楚了就ok。其实没有什么难的。
在linux下c编程中if(i)如果i=0,是不会执行。他也是先判断是不是为真,0为假,非0为真。

参考资料: http://linux.chinaunix.net/bbs/viewthread.php?tid=1038333&pid=6832692&page=2&extra=#pid6832692

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丝雪飘飘
2008-11-24 · TA获得超过350个赞
知道小有建树答主
回答量:305
采纳率:0%
帮助的人:364万
展开全部
tux@tux-desktop:~$ ppwd
bash: ppwd: command not found
tux@tux-desktop:~$ echo $?
127
tux@tux-desktop:~$ pwd
/home/tux
tux@tux-desktop:~$ echo $?
0

在SHELL里面,返回0,表明命令成功执行。。。。

在C语言里,是你说的那个情况。

这两个情况,还是有点区别的。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jinmengshi
2008-11-21 · TA获得超过140个赞
知道小有建树答主
回答量:252
采纳率:0%
帮助的人:273万
展开全部
linux 0为真
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式