假设您在命令提示符处执行以下操作:
cmd1;cmd2;cmd3
如果cmd1
失败,你怎么得到bash不要做cmd2
。
答案 0 :(得分:8)
cmd1 && cmd2 && cmd3
<强>解释强>
执行cmd1
。如果失败,则不会执行cmd2
和cmd3
。
为什么呢?因为 false 与其他任何内容进行逻辑AND运算总是等于 false ,所以如果cmd1
返回 false ,则无需评估{ {1}}和cmd2
。通过类似的推理,如果cmd3
成功且cmd1
失败,请不要执行cmd2
。
注意强>
为了让事情更加混乱,POSIX系统(如Linux和其他UNIX变体)为成功返回0,为失败返回非零。
所以,当我说上面失败时
false = 非零 = 失败
true = 零 = 成功
为什么呢?因为使用返回码的数值表示不同的失败码。
例如,
cmd3
$ 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
对于小问题返回“1”,对于更严重的问题返回“2”。 bash shell返回“127”表示“找不到命令”,ls
返回“0”表示成功。