函数/变量多依赖项导入(多次调用)

时间:2018-09-25 12:58:01

标签: bash

我有多个bash脚本文件。

base.sh
roles.sh
collect.sh

role.shcollect.sh都导入base.sh

我还有另一个文件actions.sh,该文件同时导入(源)role.shcollect.sh

  1. base.sh中的函数和变量会发生什么? (它们实际上被要求两次导入)

  2. 如何检查导入是否正确完成?

1 个答案:

答案 0 :(得分:3)

Source就像文件中的行被完全复制到source命令所在的位置一样。这样,所有变量和函数都将被定义两次,这可能无关紧要,因为上一次调用是您将获得的,除非您在rolecollect之间进行某些更改,而这将是-覆盖。

例如,如果base中的某些内容根据环境而表现不同,并且两个脚本在采购之前设置了不同的环境,则可能会导致意外行为(第二个来源被覆盖)。

即使只是这样节省了开销,您也可以使用以下内容包装整个base

[ -n "$BASE_IMPORT" ] && return

...
...

BASE_IMPORTED=1

因此您可以防止在同一环境中进行重复采购(无需显式取消设置变量)。