我有多个bash脚本文件。
base.sh
roles.sh
collect.sh
role.sh
和collect.sh
都导入base.sh
我还有另一个文件actions.sh
,该文件同时导入(源)role.sh
和collect.sh
base.sh
中的函数和变量会发生什么? (它们实际上被要求两次导入)
如何检查导入是否正确完成?
答案 0 :(得分:3)
Source就像文件中的行被完全复制到source命令所在的位置一样。这样,所有变量和函数都将被定义两次,这可能无关紧要,因为上一次调用是您将获得的,除非您在role
和collect
之间进行某些更改,而这将是-覆盖。
例如,如果base
中的某些内容根据环境而表现不同,并且两个脚本在采购之前设置了不同的环境,则可能会导致意外行为(第二个来源被覆盖)。
即使只是这样节省了开销,您也可以使用以下内容包装整个base
:
[ -n "$BASE_IMPORT" ] && return
...
...
BASE_IMPORTED=1
因此您可以防止在同一环境中进行重复采购(无需显式取消设置变量)。