C和unix shell中这些运算符之间的区别是什么?在C中没有&&意味着做第一个过程,如果是真的那么做第二个过程吗? unix shell会有什么不同?感谢
编辑我并不是指&&和和||,而是它们在c语言和unix shell中的区别。
答案 0 :(得分:2)
优先权是一个很大的不同。
请考虑以下事项:
a || b && c
在C
中,如果a
为真,则不需要评估b
和c
,因为表达式被解析为a || (b && c)
。但是,在shell中,
true || false && echo foo
将输出foo
,因为它的解析方式与(a || b) && c
相同。
另外,请注意,某些shell(例如bash
)对&&
和||
有两种用途。除了用于构造如上所述的命令列表之外,它们还可以用作C样式的布尔运算符,以在[[ ... ]]
命令中组合条件表达式。