使用“保留”代码获取shell脚本的退出状态

安东尼·格乔根(Anthony Geoghegan)

最近,我从《高级Bash脚本指南》中发现了具有特殊含义退出代码列表他们将这些代码称为保留代码,并建议:

根据上表,退出代码1-2、126-165和255具有特殊含义,因此对于用户指定的退出参数应避免使用。

前一段时间,我编写了一个脚本,该脚本使用以下退出状态代码:

  • 0-成功
  • 1-错误的主机名
  • 2-指定了无效的参数
  • 3-用户权限不足

当我编写脚本时,我并不知道任何特殊的退出代码,因此我只是从第一个错误条件的1开始,然后为每种连续的错误类型增加了退出状态。

我编写该脚本的目的是,在以后的阶段可以被其他脚本调用(可以检查非零退出代码)。我实际上还没有这样做;到目前为止,我仅从交互式外壳程序(Bash)运行脚本,并且我想知道使用自定义退出代码可能导致什么/是否有任何问题。《高级Bash脚本指南》中的建议的相关性/重要性如何?

我在Bash文档中找不到任何确凿的建议;它在“退出状态”部分仅列出了Bash使用的退出代码,但未声明保留其中任何一个或警告您不要将其用于自己的脚本/程序。

肿胀

已经进行了几次尝试来标准化进程出口代码的含义。除了您提到的那一项,我还知道:

  • BSD具有sysexits.h定义从64开始的值的含义。

  • GNUgrep文档的退出代码0表示至少找到一个匹配项,1表示没有找到匹配项,而2表示发生了I / O错误;对于其他程序,“什么都没出错但我什么也没找到”和“发生I / O错误”之间的区别很有意义,因此该约定显然也很有用。

  • C库函数的许多实现都system使用退出代码127指示该程序不存在或无法启动。

  • 在Windows上,可以将NTSTATUS代码(不方便地散布在整个32位数字空间中)用作退出代码,尤其是那些指示进程由于灾难性的不良行为而终止的代码(例如STATUS_STACK_OVERFLOW)。

您不能指望任何遵循这些约定中任何特定约定的给定程序。唯一可靠的规则是,退出代码0是成功,而其他任何事情都是某种失败。(请注意,C89的EXIT_SUCCESS不能保证为零;但是,即使值不exit(0)相同也必须具有相同的行为exit(EXIT_SUCCESS)。)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用“保留”代码获取shell脚本的退出状态

来自分类Dev

在“陷阱退出”中获取shell脚本的退出代码。

来自分类Dev

记录ssh shell的输出并保留退出状态

来自分类Dev

从shell脚本中的函数捕获退出状态

来自分类Dev

如何设置shell脚本的退出状态?

来自分类Dev

Bash退出代码状态脚本错误

来自分类Dev

如何在Expect Shell脚本中获取生成的进程的退出代码?

来自分类Dev

在bash脚本中从curl获取退出代码

来自分类Dev

在此shell脚本中使用包含退出代码的布尔表达式的目的是什么?

来自分类Dev

使用||后,请通过退出状态代码

来自分类Dev

如何在Shell脚本中获取Java应用程序的退出状态,标准输出和标准错误流?

来自分类Dev

Shell脚本在失败时不记录Java退出状态

来自分类Dev

Shell脚本在失败时不记录Java退出状态

来自分类Dev

如何使用Shell脚本从vi中退出?

来自分类Dev

如何从Expect脚本中的命令获取退出状态

来自分类Dev

如果默认CMD是Shell脚本,则Docker停止退出代码-1

来自分类Dev

运行python脚本运行shell文件时退出代码191

来自分类Dev

如果默认的CMD是Shell脚本,则Docker停止退出代码-1

来自分类Dev

从Python获取退出状态代码,例如0或1

来自分类Dev

退出shell脚本

来自分类Dev

不退出 shell 脚本

来自分类Dev

获取由linux脚本命令执行的命令的退出代码

来自分类Dev

在Linux Shell中同时过滤输出并获取程序的退出代码

来自分类Dev

在Linux Shell中同时过滤输出并获取程序的退出代码

来自分类Dev

如果脚本中有退出陷阱的shell错误,则将退出代码传播给调用者

来自分类Dev

Bash脚本在if语句中使用退出状态

来自分类Dev

从Shell脚本中的curl检索HTTP状态代码和内容

来自分类Dev

Chocolatey能否以安装/脚本的退出状态退出?

来自分类Dev

bash脚本中的退出状态

Related 相关文章

  1. 1

    使用“保留”代码获取shell脚本的退出状态

  2. 2

    在“陷阱退出”中获取shell脚本的退出代码。

  3. 3

    记录ssh shell的输出并保留退出状态

  4. 4

    从shell脚本中的函数捕获退出状态

  5. 5

    如何设置shell脚本的退出状态?

  6. 6

    Bash退出代码状态脚本错误

  7. 7

    如何在Expect Shell脚本中获取生成的进程的退出代码?

  8. 8

    在bash脚本中从curl获取退出代码

  9. 9

    在此shell脚本中使用包含退出代码的布尔表达式的目的是什么?

  10. 10

    使用||后,请通过退出状态代码

  11. 11

    如何在Shell脚本中获取Java应用程序的退出状态,标准输出和标准错误流?

  12. 12

    Shell脚本在失败时不记录Java退出状态

  13. 13

    Shell脚本在失败时不记录Java退出状态

  14. 14

    如何使用Shell脚本从vi中退出?

  15. 15

    如何从Expect脚本中的命令获取退出状态

  16. 16

    如果默认CMD是Shell脚本,则Docker停止退出代码-1

  17. 17

    运行python脚本运行shell文件时退出代码191

  18. 18

    如果默认的CMD是Shell脚本,则Docker停止退出代码-1

  19. 19

    从Python获取退出状态代码,例如0或1

  20. 20

    退出shell脚本

  21. 21

    不退出 shell 脚本

  22. 22

    获取由linux脚本命令执行的命令的退出代码

  23. 23

    在Linux Shell中同时过滤输出并获取程序的退出代码

  24. 24

    在Linux Shell中同时过滤输出并获取程序的退出代码

  25. 25

    如果脚本中有退出陷阱的shell错误,则将退出代码传播给调用者

  26. 26

    Bash脚本在if语句中使用退出状态

  27. 27

    从Shell脚本中的curl检索HTTP状态代码和内容

  28. 28

    Chocolatey能否以安装/脚本的退出状态退出?

  29. 29

    bash脚本中的退出状态

热门标签

归档