使用 <setenv> 元素可初始化 <interface> 或 <match> 元素中的环境变量值。
<setenv> 元素不包含其他元素。
可以三种不同的方式使用该变量:
- 如果您指定组名,它的工作方式与 .set 命令类似。
它设置数据库中主记录中的变量值而不设置当前步骤使用的副本。当前步骤中运行的适配器看不到更改。您不能以这种方式创建新变量。
- 如果未指定组名,它的工作方式类似于 .bset 命令。它设置在运行的作业的环境中的变量值。更改对作业中的所有步骤都可用。可以这种方式创建新变量。
- 如果不指定组名而指定临时变量(type="temp"),它将设置一个仅供适配器逻辑使用的临时变量。该变量在适配器步骤运行后不会持久保存。可以这种方式创建新变量。
属性:
- condition
- 或者,其形式为 condition="funtion"。funtion 的值是一个表达式,其求值结果为 true 或 false。如果它的求值结果为 true,那么运行命令。如果它的求值结果为 false,那么不运行命令。请参阅条件函数。
- eval
- 可选。设置为 True 或 False。如果为 true,适配器将尝试对 value 属性表达式求值并存储结果。
- group
- 可选。它指定其中定义该变量的 Build Forge 环境。如果指定环境名称,必须引用指定环境中的现有变量。
如果将 [ADAPTOR] 指定为值,那么该值在运行时设置。
它设置为调用适配器的步骤或适配器链接的环境。
Build Forge 允许多个环境中具有相同名称的变量。环境继承的优先顺序以及环境包含会影响确定在运行时指定给变量的值的方式。
- name
- 必需。它指定要设置的变量的名称。该值可以是一个变量。在这种情况下,在运行时才会设置变量名称。
- type
- 可选。它指定设置变量的方法。它使用下面的一个值:
- append text:将指定值放在任何现有值之后。如果指定了可选的 text,该文本将放在两个值之间。
- once:仅当尚未设置时才应设置该变量。
- prepend text:将值放在任何现有值之前。
- temp:仅应在适配器上下文中设置变量。
如果指定了可选的 text,该文本将放在两个值之间。请参阅下面的示例。
- value
- 必需。它是要在变量中设置的值。如果还指定了 eval 属性,那么它可以是要求值的表达式。
求值结果以值的形式存储。
示例:
以下示例对 value 属性中的表达式求值并将结果存储在变量 LAST_VER 中。它将设置为 $LAST_VER 和 $1 变量值之间的较大者。
<setenv group="Adaptor" name="LAST_VER"
value="$LAST_VER>$1?$LAST_VER:$1" eval="true" />
以下示例在向变量 Changes 追加数据之前插入换行符(\n):
<setenv name="Changes" value="$4 - $1 - $6" type="temp append\n" />
以下示例在向变量 INFOPATH 追加的值之后插入冒号:
<setenv name="INFOPATH" value="/usr/local" type="temp prepend:" />