请教逻辑操作符"||"的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
Dic4000
帖子: 104
注册时间: 2008-09-10 21:06

请教逻辑操作符"||"的问题

#1

帖子 Dic4000 » 2008-12-15 23:59

代码: 全选

test 3 -gt 4 && echo True || echo false
请问:这里的||代表什么含义?
这个操作符在Linux下有几种含义?我现在只知道有个逻辑或的含义。
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

Re: 请教逻辑操作符"||"的问题

#2

帖子 HuntXu » 2008-12-16 1:42

&&表示前一个执行返回成功后执行
||表示前面那个返回“失败/没有”后执行...
大概是这么个意思...
具体到例子里,如果最前面的那个测试返回真,那么&&后面的就执行,执行成功了,就不执行||后面的...
如果前面的测试返回假,那么&&后面就没被执行,于是||后面的就执行了...
发现我讲得逻辑混乱...
不知道abs里是不是有,建议看看《Beginning Linux Programming》第二章的介绍...
HUNT Unfortunately No Talent...
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请教逻辑操作符"||"的问题

#3

帖子 eexpress » 2008-12-16 8:51

经常这样用于测试的
xxxx && echo ok || echo error
● 鸣学
grdxyxy
帖子: 229
注册时间: 2007-07-14 22:39

Re: 请教逻辑操作符"||"的问题

#4

帖子 grdxyxy » 2008-12-16 10:30

abs里面当然有了。
很多语言都是这样吧,编译器或者解释器处理这种逻辑的时候都是这样。
比如或,前面为真,则结果为真,就不会执行后面的了。
头像
fengjie
帖子: 130
注册时间: 2008-03-19 14:20

Re: 请教逻辑操作符"||"的问题

#5

帖子 fengjie » 2008-12-16 10:57

勉强看明白了,学习了
主板:ASUS P8Z77-V
CPU:Intel 酷睿i3 3200
内存:ADTA DDRⅢ 1600 8G
显卡:Intel® HD Graphic
声卡:Realtek ALC 892
有线网卡:Intel® 82579V
无线网卡:Qualcomm Atheros AR9485
硬盘:WDC WD6401AALS
电源:长城ATX-350SD静音大师
显示器:Samsung S24A350H
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51

Re: 请教逻辑操作符"||"的问题

#6

帖子 c\nc » 2008-12-16 12:10

我觉得是这个意思:

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
	
两个逻辑判断可以混用,原则应该不变。不知道说得对不对~ :em09
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: 请教逻辑操作符"||"的问题

#7

帖子 xhy » 2008-12-16 14:35

短路表达式
目前负债150多万
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请教逻辑操作符"||"的问题

#8

帖子 eexpress » 2008-12-16 14:41

。。。。。。。。。。你强。你研究。 :em04
● 鸣学
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51

Re: 请教逻辑操作符"||"的问题

#9

帖子 c\nc » 2008-12-16 15:28

我看阿姨有点短路了。再来一个,既然是逻辑判断,and 和 or 都有了,再加个 not 也没问题:

代码: 全选

$ echo a || echo b || echo c && echo ok
a
ok

$ ! echo a || echo b || echo c && echo ok
a
b
ok
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请教逻辑操作符"||"的问题

#10

帖子 eexpress » 2008-12-16 15:43

我不短路。是别人说的。
我不会使用有歧义的表达式的。编程带来的习惯。
● 鸣学
回复