如何解决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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。