Bash / sh-&&和;之间的差异

| 我通常使用“ 0”在一行中组合多个命令,但有些人更喜欢“ 1”。有什么区别吗?例如,
cd ~; cd -
cd ~ && cd -
似乎是同一回事。哪个版本更便于携带,例如bash子集(如Android的shell左右)将支持它吗?     
已邀请:
        如果前一个命令失败并显示“ 0”,则第二个命令将运行。 但是使用
&&
,第二个就不会运行。 这是操作之间的“懒惰”逻辑“ AND”操作数。     
        我使用using1ѭ是因为很久以前在附近的计算机上:
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
中,无论如何都将执行
cmd2
。 这两个构造都是POSIX兼容shell的一部分。     
        “ 1”表示如果前一个以状态0退出,则执行下一个命令。 反之,使用
||
,即,如果前一个命令以不等于0的状态退出,则执行be0ѭ总是执行。 当您需要执行特定操作时,此功能非常有用,具体取决于上一个命令是否完成。     
        由“ 0”分隔的命令将按顺序执行,无论其完成状态如何。 使用
&&
,仅当第一个命令成功完成(返回退出状态0)时,才执行第二个命令。 bash手册页中的
Lists
对此进行了介绍。我希望任何类似Unix的外壳程序都支持这两个操作符,但是我不特别了解Android外壳程序。     
        
&&
允许条件执行,而
;
总是执行第二个命令。 例如仅当
command1
以with25ѭ终止时,才执行with22ѭ,terminated23ѭ,表示一切顺利,而在
command1 ; command2
中,无论
command1
的结果如何,始终执行第二条命令。     
        &&在bash中是逻辑AND。 Bash对逻辑AND进行短路评估。这个成语是表达以下内容的一种简单方法:
cmd1;rc=$?
if [ $rc -eq 0 ]; then
   cmd2
fi
而;版本仅仅是:
cmd1
cmd2
    

要回复问题请先登录注册