定义 lsb 函数后 Bash 脚本中止

定义 lsb 函数后 Bash 脚本中止

我目前正在尝试运行一个脚本,该脚本需要定义一些 LSB 函数。以下是这种情况:

echo "step 1"

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS

echo "step 2"

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

echo "step 3"

但是脚本在步骤 2 之后中止执行,我从未得到输出“步骤 3”。此脚本是 deluged 的​​启动脚本。它曾经可以工作,但我注意到我的 deluge 不再工作了,我将问题追溯到这行代码。

有人知道这是什么原因造成的吗? init-functions 文件存在于指定的目录中。

答案1

如果 shell 脚本中的某些内容使用了 exec 或 exit 而不是 return 或者只是到达文件末尾,那么在获取该 shell 脚本的过程中,您就会看到中止。

从文件系统布局来看,我猜你使用的是 RedHat 衍生产品,在 CentOS 6 和 CentOS 7 上,/lib/lsb/init-functions 文件非常短,默认情况下包含的内容很少,因此除非对其进行了修改,否则我不认为你看到的结果可能存在。你的下一个调试步骤可能是检查该文件是否有其他来源,否则插入更多调试消息以准确找出它在哪一行中中止。

答案2

我找到了问题所在:文件权限错误,不允许脚本读取该文件。

相关内容