为啥许多 init.d 脚本以“exit $?”结尾?
Posted
技术标签:
【中文标题】为啥许多 init.d 脚本以“exit $?”结尾?【英文标题】: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 $?
”的作用是什么?
【问题讨论】:
【参考方案1】:它使脚本将最后一个有效命令的返回码返回给调用 init 系统。每当一个命令退出时,它的返回码都会被 shell 存储在$?
中。
实际上并没有必要明确指定$?
,但脚本编写者可能只是将其包含在内以明确其打算做什么。
退出:退出 [n]
退出外壳。
退出shell,状态为N。如果省略N,退出状态 是最后执行的命令。
我也希望你不是指eend $?
of OpenRC
:
结束 retval [字符串]
如果 retval 不等于 0,则使用 eerror 和 !! 输出字符串在行尾的方>括号中。否则在行尾的方括号中输出 ok。返回 retval 的值。
见source。
【讨论】:
所以是为了代码清晰? (一个 sn-p 说“不要覆盖退出代码,因为我依赖它”?) 这可能是一回事。如果它在脚本的末尾,exit
也可以省略,因为默认情况下 shell 会返回 $?
的任何值。以上是关于为啥许多 init.d 脚本以“exit $?”结尾?的主要内容,如果未能解决你的问题,请参考以下文章
理解Linux系统/etc/init.d目录和/etc/rc.local脚本