分页: 1 / 1
请教逻辑操作符"||"的问题
发表于 : 2008-12-15 23:59
由 Dic4000
代码: 全选
test 3 -gt 4 && echo True || echo false
请问:这里的
||代表什么含义?
这个操作符在Linux下有几种含义?我现在只知道有个逻辑或的含义。
Re: 请教逻辑操作符"||"的问题
发表于 : 2008-12-16 1:42
由 HuntXu
&&表示前一个执行返回成功后执行
||表示前面那个返回“失败/没有”后执行...
大概是这么个意思...
具体到例子里,如果最前面的那个测试返回真,那么&&后面的就执行,执行成功了,就不执行||后面的...
如果前面的测试返回假,那么&&后面就没被执行,于是||后面的就执行了...
发现我讲得逻辑混乱...
不知道abs里是不是有,建议看看《Beginning Linux Programming》第二章的介绍...
Re: 请教逻辑操作符"||"的问题
发表于 : 2008-12-16 8:51
由 eexpress
经常这样用于测试的
xxxx && echo ok || echo error
Re: 请教逻辑操作符"||"的问题
发表于 : 2008-12-16 10:30
由 grdxyxy
abs里面当然有了。
很多语言都是这样吧,编译器或者解释器处理这种逻辑的时候都是这样。
比如或,前面为真,则结果为真,就不会执行后面的了。
Re: 请教逻辑操作符"||"的问题
发表于 : 2008-12-16 10:57
由 fengjie
勉强看明白了,学习了
Re: 请教逻辑操作符"||"的问题
发表于 : 2008-12-16 12:10
由 c\nc
我觉得是这个意思:
cmd1 || cmd2 || cmd3 || ... 从 cmd1 开始执行,遇到第一个返回值为 0 的命令之后,跳过所有连续的 || 判断,执行后面的命令,如:
代码: 全选
$ asdf || echo 2 || echo 3 || echo 4 && echo ok
bash: asdf: command not found
2
ok
cmd1 && cmd2 && cmd3 && ... 从 cmd1 开始执行,遇到第一个返回值不为 0 的命令之后,跳过所有连续的 && 判断,执行后面的命令,如:
代码: 全选
$ echo 1 && echo 2 && echo 3 && asdf || echo yes && echo YES
1
2
3
bash: asdf: command not found
yes
YES
两个逻辑判断可以混用,原则应该不变。不知道说得对不对~
Re: 请教逻辑操作符"||"的问题
发表于 : 2008-12-16 14:35
由 xhy
短路表达式
Re: 请教逻辑操作符"||"的问题
发表于 : 2008-12-16 14:41
由 eexpress
。。。。。。。。。。你强。你研究。
Re: 请教逻辑操作符"||"的问题
发表于 : 2008-12-16 15:28
由 c\nc
我看阿姨有点短路了。再来一个,既然是逻辑判断,and 和 or 都有了,再加个 not 也没问题:
代码: 全选
$ echo a || echo b || echo c && echo ok
a
ok
$ ! echo a || echo b || echo c && echo ok
a
b
ok
Re: 请教逻辑操作符"||"的问题
发表于 : 2008-12-16 15:43
由 eexpress
我不短路。是别人说的。
我不会使用有歧义的表达式的。编程带来的习惯。