防止 bash 重新包含

防止 bash 重新包含

我有一组可以互相提供源的 bash 脚本,例如,源 b.sh 源 a.sh 等等...除了重新设计(这可能并不总是可行的)之外,避免源循环的最佳做法是什么?

我采用的一种方法是使用给定函数的存在来指示不要再次获取此脚本。例如

a.sh: 
    declare -F a
    if [ $? -eq 0 ]
    then
        return
    fi
    ...
    function a()
    {
    }

另一种方法是每个文件都有一些变量“$sourced_a_sh”,如果设置则返回。

然而,这些方法看起来都很笨拙。有没有更好的方法?

答案1

您可以将其添加为脚本 a.sh 的第一行:

[ "$sourced_a_sh" != "" ] && return || sourced_a_sh=.

相关内容