为什么我感到困惑“当命令在BASH中失败时,退出状态代码为0”

Peng Zhang

注意:没有以正确的方式询问此问题。原因是!条件行中的if ! ( commad)命令的一部分,因此它更改了$?因此,当我检查$?的退出状态时command,我错了。接受的答案将对此进行详细说明。

根据我的编码经验,程序成功返回/退出0,失败返回其他值。例如,在C中,我们exit 0用来表示成功终止。但是,当我编写一个bash脚本来确定命令是否成功时,我发现非常奇怪,这0意味着发生了一些错误并且命令失败了。例如,

if ! (make $1); then
   exit 1
fi

问题当BASH中的命令失败时,为什么退出状态代码为0?

查尔斯·达菲

在这个问题上提出的主张是错误的;bash不0用于表示失败的退出。

$ make bad; echo $?
make: *** No rule to make target `bad'.  Stop.
2
$ scp badhost:/something .; echo $?
ssh: Could not resolve hostname badhost: nodename nor servname provided, or not known
1

当然,!用于反转失败和成功的结果将使失败后的$?值为0,但这是明确而刻意的动作。

$ ! make bad; echo $?
make: *** No rule to make target `bad'.  Stop.
0
$ ! scp badhost:/something .; echo $?
ssh: Could not resolve hostname badhost: nodename nor servname provided, or not known
0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么 bash eval 在退出状态 > 0 的命令时返回 0?

来自分类Dev

即使命令错误,为什么退出代码为0?

来自分类Dev

为什么我的 Bash 提示功能中的退出状态检查也评估为真?

来自分类Dev

为什么`rake db:drop`失败时退出状态为0,并且不引发错误?

来自分类Dev

为什么会出现clang:错误:链接器命令失败,退出代码为1?

来自分类Dev

iOS-当我创建NSManagedObject子类时->链接器命令失败,退出代码为1

来自分类Dev

在vim中折叠代码使我感到困惑

来自分类Dev

在vim中折叠代码使我感到困惑

来自分类Dev

我的$?命令成功的代码失败,为什么?

来自分类Dev

归档时命令 /bin/sh 失败,退出代码为 1

来自分类Dev

在Xcode中构建Unity项目时,链接器命令失败,退出代码为1

来自分类Dev

为什么在脚本开始时退出状态始终为0?

来自分类Dev

用Twemproxy安装了Redis Cluster,我对为什么移动某些SET命令感到非常困惑

来自分类Dev

用Twemproxy安装了Redis集群,我对为什么移动某些SET命令感到非常困惑

来自分类Dev

这段代码似乎不起作用,为什么我不感到困惑

来自分类Dev

为什么退出代码0表示成功而1表示失败

来自分类Dev

在以set -e开头的bash脚本中,我可以将退出代码设置为与第一个失败命令不同的值吗?

来自分类Dev

当scalac重载“ andThen”时,为什么scalac会使我的SAM类型不实现Function感到困惑?

来自分类Dev

当我无法处理异常时,为什么退出代码为零(“良好”)?

来自分类Dev

为什么我为GWT或GWTP中的小部件设置CSS的方法这么多,我感到困惑?有人可以澄清吗?

来自分类Dev

Cordova:命令失败,退出代码为EACCES

来自分类Dev

错误:命令失败,退出代码为ENOENT

来自分类Dev

错误:命令失败,退出代码为ENOENT

来自分类Dev

Phonegap:命令失败,退出代码为8

来自分类Dev

cmd:命令失败,退出代码为ENOENT

来自分类Dev

在 Dockerfile 中运行保证退出代码为 0 的命令

来自分类Dev

在Bash脚本中对此“ find”命令感到困惑吗?

来自分类Dev

为什么在优胜美地的Xcode 6中出现错误“命令/ usr / bin / codesign失败,退出代码1”的错误?

来自分类Dev

我对快递中的两行源代码感到困惑

Related 相关文章

  1. 1

    为什么 bash eval 在退出状态 > 0 的命令时返回 0?

  2. 2

    即使命令错误,为什么退出代码为0?

  3. 3

    为什么我的 Bash 提示功能中的退出状态检查也评估为真?

  4. 4

    为什么`rake db:drop`失败时退出状态为0,并且不引发错误?

  5. 5

    为什么会出现clang:错误:链接器命令失败,退出代码为1?

  6. 6

    iOS-当我创建NSManagedObject子类时->链接器命令失败,退出代码为1

  7. 7

    在vim中折叠代码使我感到困惑

  8. 8

    在vim中折叠代码使我感到困惑

  9. 9

    我的$?命令成功的代码失败,为什么?

  10. 10

    归档时命令 /bin/sh 失败,退出代码为 1

  11. 11

    在Xcode中构建Unity项目时,链接器命令失败,退出代码为1

  12. 12

    为什么在脚本开始时退出状态始终为0?

  13. 13

    用Twemproxy安装了Redis Cluster,我对为什么移动某些SET命令感到非常困惑

  14. 14

    用Twemproxy安装了Redis集群,我对为什么移动某些SET命令感到非常困惑

  15. 15

    这段代码似乎不起作用,为什么我不感到困惑

  16. 16

    为什么退出代码0表示成功而1表示失败

  17. 17

    在以set -e开头的bash脚本中,我可以将退出代码设置为与第一个失败命令不同的值吗?

  18. 18

    当scalac重载“ andThen”时,为什么scalac会使我的SAM类型不实现Function感到困惑?

  19. 19

    当我无法处理异常时,为什么退出代码为零(“良好”)?

  20. 20

    为什么我为GWT或GWTP中的小部件设置CSS的方法这么多,我感到困惑?有人可以澄清吗?

  21. 21

    Cordova:命令失败,退出代码为EACCES

  22. 22

    错误:命令失败,退出代码为ENOENT

  23. 23

    错误:命令失败,退出代码为ENOENT

  24. 24

    Phonegap:命令失败,退出代码为8

  25. 25

    cmd:命令失败,退出代码为ENOENT

  26. 26

    在 Dockerfile 中运行保证退出代码为 0 的命令

  27. 27

    在Bash脚本中对此“ find”命令感到困惑吗?

  28. 28

    为什么在优胜美地的Xcode 6中出现错误“命令/ usr / bin / codesign失败,退出代码1”的错误?

  29. 29

    我对快递中的两行源代码感到困惑

热门标签

归档