假设您在命令提示符下在 bash 中执行以下操作:
cmd1;cmd2;cmd3
如果 cmd1
失败,您如何让 bash 不执行 cmd2
。
最佳答案
cmd1 && cmd2 && cmd3
解释
执行cmd1
。如果失败,cmd2
和cmd3
将不会被执行。
为什么?因为 false 与其他任何东西逻辑与总是等于 false,所以如果 cmd1
返回 false 就没有必要评估 cmd2
和 cmd3
。并且通过类似的推理,如果 cmd1
成功而 cmd2
失败,则不要执行 cmd3
。
注意
为了让事情变得更加困惑,POSIX 系统(如 Linux 和其他 UNIX 变体)返回 0 表示成功,非零表示失败。
所以,当我在上面说失败
false = 非零 = 失败
true = 零 = 成功
为什么?因为使用返回码的数值来表示不同的故障码。
例如,
$ ls /root
ls: cannot open directory /root: Permission denied
$ echo $?
2
$ asdf
asdf: command not found...
$ echo $?
127
$ ls /
bin boot data dev etc home lib ...
$ echo $?
0
ls
对小问题返回“1”,对更严重的问题返回“2”。 bash shell 返回“127”表示“未找到命令”,ls/
返回“0”表示成功。
关于linux - 如何让 bash shell 不执行命令的分号列表的其余部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17700620/