【问题标题】:Why do many init.d scripts end in "exit $?"?为什么许多 init.d 脚本以“exit $?”结尾?
【发布时间】:2014-10-11 06:09:58
【问题描述】:

我在 CentOS 6.5 的 init.d 脚本中看到了很多奇怪的怪癖,但我在大多数这些脚本的结尾看到的一种模式是

case "$1" in
    # ... commands here
esac
exit $?

这里“exit $?”的作用是什么?

【问题讨论】:

    标签: linux bash init.d centos6.5


    【解决方案1】:

    它使脚本将最后一个有效命令的返回码返回给调用 init 系统。每当一个命令退出时,它的返回码都会被 shell 存储在$? 中。

    实际上并没有必要明确指定$?,但脚本编写者可能只是将其包含在内以明确其打算做什么。

    退出:退出 [n]

    退出外壳。

    退出shell,状态为N。如果省略N,退出状态 是最后执行的命令。

    我也希望你不是指eend $? of OpenRC

    结束 retval [字符串]

    如果 retval 不等于 0,则使用 eerror 和 !! 输出字符串在行尾的方>括号中。否则在行尾的方括号中输出 ok。返回 retval 的值。

    source

    【讨论】:

    • 所以是为了代码清晰? (一个 sn-p 说“不要覆盖退出代码,因为我依赖它”?)
    • 这可能是一回事。如果它在脚本的末尾,exit 也可以省略,因为默认情况下 shell 会返回 $? 的任何值。
    猜你喜欢
    • 2013-06-22
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多