【发布时间】: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
我在 CentOS 6.5 的 init.d 脚本中看到了很多奇怪的怪癖,但我在大多数这些脚本的结尾看到的一种模式是
case "$1" in
# ... commands here
esac
exit $?
这里“exit $?”的作用是什么?
【问题讨论】:
标签: linux bash init.d centos6.5
它使脚本将最后一个有效命令的返回码返回给调用 init 系统。每当一个命令退出时,它的返回码都会被 shell 存储在$? 中。
实际上并没有必要明确指定$?,但脚本编写者可能只是将其包含在内以明确其打算做什么。
退出:退出 [n]
退出外壳。
退出shell,状态为N。如果省略N,退出状态 是最后执行的命令。
我也希望你不是指eend $? of OpenRC:
结束 retval [字符串]
如果 retval 不等于 0,则使用 eerror 和 !! 输出字符串在行尾的方>括号中。否则在行尾的方括号中输出 ok。返回 retval 的值。
见source。
【讨论】:
exit 也可以省略,因为默认情况下 shell 会返回 $? 的任何值。