RNA*_*RNA 5 shell include-guards
让我们看一个例子:在我的main.sh中,我想找一个a.sh和b.sh. 但是,a.sh可能已经采购了b.sh. 因此,它将导致b.sh中的代码执行两次.在C++中是否有类似"包含守卫"的机制?
如果您正在寻找脚本,则通常使用它们来定义函数和/或变量.
这意味着您可以通过测试(定义)其定义的函数或变量来测试脚本是否已经来源.
例如(in b.sh):
if [ -z "$B_SH_INCLUDED" ]
then
B_SH_INCLUDED=yes
...rest of original contents of b.sh
fi
Run Code Online (Sandbox Code Playgroud)
我知道没有其他方法可以做到这一点.特别是,您不能进行早期退出或返回,因为这会影响shell获取文件.您不必使用仅用于文件的名称; 您可以使用文件始终定义的名称.
在bash中,早期返回不会影响源文件,它会返回到它,就好像当前文件是一个函数一样.我更喜欢这种方法,因为它避免包装整个内容if...fi.
if [ -n "$_for_example" ]; then return; fi
_for_example=`date`
Run Code Online (Sandbox Code Playgroud)