Bash / sh – &&和;之间的区别
我通常使用; 在一条线上结合多个命令,但有些人更喜欢&& 。 有什么区别吗? 例如, cd ~; cd -  cd ~; cd -和cd ~ && cd -似乎做同样的事情。 什么版本更具可移植性,比如Android的shell等bash子集支持? 
如果以前的命令失败, 第二个将运行。
 但用&&第二个不会运行。 
这是操作之间的“懒”逻辑“AND”操作数。
 我很久以前在附近的电脑上使用&& : 
 root# pwd / root# cd /tnp/test; rm -rf * cd: /tnp/test: No such file or directory ... ... and after a while ... ... ^C 
但没有帮助…;)
  cd /tnp/test && rm -rf *是安全的…;) 
 在cmd1 && cmd2 ,只有cmd1成功(返回0)才会执行cmd2 。 
 在cmd1 ; cmd2  cmd1 ; cmd2 , cmd2在任何情况下都执行。 
这两个构造都是符合POSIX标准的shell的一部分。
 命令分开; 无论其完成状态如何都按顺序执行。 
 使用&& ,只有第一个命令成功完成(返回退出状态0),才会执行第二个命令。 
 这在Lists下的bash manpage中有介绍。 我期望任何类Unix的shell都支持这两种操作符,但我不知道具体的Android shell。 
  &&表示如果先前退出状态为0,则执行下一个命令。相反,使用|| 即如果先前的命令以不等于0的状态退出则执行; 总是执行。 
当你需要采取一个特定的行动取决于前面的命令是否完成OK是非常有用的。
  &&允许条件执行while ; 总是有第二个命令正在执行。 
 在例如command1 && command2 , command2将只在command1以exit 0结束时执行,信号一切正常,而在command1 ; command2  command1 ; command2不pipecommand1的结果如何,第二个命令都会被执行。 
&&是逻辑与在bash中。 Bash对逻辑“与”进行短路评估。 这个成语是一个简单的expression方式:
 cmd1;rc=$? if [ $rc -eq 0 ]; then cmd2 fi 
而; 版本仅仅是:
 cmd1 cmd2