在UNIX shell中复合语句“;”之间的区别和“&&”

时间:2013-01-30 18:40:29

标签: bash

说我想在/ tmp

中触摸mickymouse

我能做到

cd /tmp ; touch mickymouse

或者我可以做到

cd /tmp && touch mickymouse

我不清楚这两个陈述之间的微妙(或不那么微妙)差异是什么。

希望评论两者之间的区别。

感谢。

2 个答案:

答案 0 :(得分:6)

;终止语句,而&&是逻辑AND。

cd /tmp ; touch mickymouse

在上文中,即使cd /tmp失败,touch mickymouse仍会被执行。

在第二个中,

cd /tmp && touch mickymouse

仅在touch mickymouse成功

时才cd /tmp

答案 1 :(得分:1)

请注意&&是特殊操作,其中&&的RHS只有在&&的LHS为真时才会执行。

或仅当/tmp可用时,您才能touch mickymouse

在前面的情况中,它只返回一个错误/tmp不可用。

或者你可以有效地做到

touch /tmp/mickymouse