任何人都可以解释以下内容吗?
1. (( 0 && 1 )) # Logical AND
echo $? # 1 ***
# And so ...
2. let "num = (( 0 && 1 ))"
echo $num # 0
# But ...
3. let "num = (( 0 && 1 ))"
echo $? # 1 ***
如果1是1的退出代码,则2中的num不应包含相同的退出代码吗?
答案 0 :(得分:2)
原因:退出状态与命令的输出不同。
答案 1 :(得分:1)
num
未分配算术命令的退出代码。它的值为0 && 1
;这里,双括号简单地被视为嵌套的子表达式。 let
语句等同于
(( num = (( 0 && 1 )) ))
将=
运算符的RHS视为表达式,而不是语句。