LinuxSir.cn,穿越时空的Linuxsir!

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

shell编程的一个问题

[复制链接]
发表于 2007-6-12 15:49:20 | 显示全部楼层 |阅读模式
#!/bin/sh
if cp test test1
then echo“cp done”
else echo “cp fail”
fi


cp 成功不是返回0 吗?
为什么这个if 后执行的是1?
发表于 2007-6-12 17:57:54 | 显示全部楼层
返回值应该是判断$?吧?
回复 支持 反对

使用道具 举报

发表于 2007-6-12 20:59:40 | 显示全部楼层
你说的这个返回值是进程结束的返回值把?echo $?
回复 支持 反对

使用道具 举报

发表于 2007-6-12 21:02:02 | 显示全部楼层
Post by kandyche
#!/bin/sh
if cp test test1
then echo“cp done”
else echo “cp fail”
fi


cp 成功不是返回0 吗?
为什么这个if 后执行的是1?

这个“if”就很特殊,当后面命令的返回值为零时才执行then,非零就执行else。
回复 支持 反对

使用道具 举报

发表于 2007-6-14 17:23:57 | 显示全部楼层
可以理解为
if cp成功了
then ...
只不过cp成功的返回值为0
回复 支持 反对

使用道具 举报

发表于 2007-6-14 20:52:30 | 显示全部楼层
cp file1 file2 2>/dev/null || echo "false"  
如果不成功,则显示false,否则什么也不显示
回复 支持 反对

使用道具 举报

发表于 2007-6-14 20:53:51 | 显示全部楼层
我是这么理解的:
条件判断后只有两种情况-TRUE or FALSE。 一个命令返回0则被视为成功,于是这个条件测试的结果是TRUE;否则结果为FALSE

或者说: 返回值 is NOT 表达式的值
回复 支持 反对

使用道具 举报

发表于 2007-6-15 05:16:57 | 显示全部楼层
bash  中,0 是成功,非 0 是失败,,和一般语言似乎是相反的。
回复 支持 反对

使用道具 举报

发表于 2007-6-15 19:51:03 | 显示全部楼层
我不这样想呢. 编C程序, 程序正确的时候会return 0. 程序半路出错才会return 1 2....
这个判断符合编程习惯.
回复 支持 反对

使用道具 举报

发表于 2007-6-16 00:22:34 | 显示全部楼层
Post by 晨想
bash  中,0 是成功,非 0 是失败,,和一般语言似乎是相反的。


呵呵 我正好看了那断,版主的话是正解
回复 支持 反对

使用道具 举报

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

本版积分规则

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