逻辑运算符如何表现?

时间:2014-07-18 20:04:27

标签: shell logical-operators

我试图在shell脚本中理解这段代码但是我无法理解这里的逻辑。任何人都可以帮助我理解这背后的逻辑..

(( 0 && 1 )) **# Logical AND** echo $? # 1 ***
# And so ... let "num = (( 0 && 1 ))" echo $num # 0
# But ... let "num = (( 0 && 1 ))" echo $? # 1 ***

(( 200 || 11 )) **# Logical OR**
echo $? # 0 ***
# ...
let "num = (( 200 || 11 ))"
echo $num # 1
let "num = (( 200 || 11 ))"
echo $? # 0 ***

问题:

  1. 为什么shell在执行时返回退出状态1((0 &安培;&安培; 1))? 执行let" num =((0&& 1))"为什么我们得到 不同的退出状态?

1 个答案:

答案 0 :(得分:0)

(( 0 && 1 ))返回1的状态,因为任何0 && $any_number操作始终为零,这将使((...))的状态为1。< / p>

但是,当您使用以下命令将(( 0 && 1 ))的值分配给另一个shell变量时

let "num = (( 0 && 1 ))"

然后退出状态将为0,因为分配成功并且命令被视为成功。