首页 > 解决方案 > 如何在免费标记模板中有条件地设置环境变量

问题描述

我有一个带有一些导出语句的 .ftl,对于一个特定的变量,我想做一个条件检查它是否存在并设置。我遵循了这里提到的语法,我的脚本如下所示

export my_app_name=${app_setttings.name}
export my_app_env=${my_app_env:-root}        # this is bash syntax but clasing with ftl syntax

我收到以下错误

Encountered ":", but was expecting one of:
"."
".."
<DOT_DOT_LESS>
.
.
.
<TERMINATING_EXCLAIM>

标签: linuxbashtemplatesfreemarker

解决方案


FreeMarker 已经${...}在其默认语法中使用,所以即使${app_settings.name}是一个问题,因为 FreeMarker 会尝试评估它。因此,您应该将 FreeMarker 配置为使用方括号插值语法,而[=...]不是${...}. 同时,通常您也希望将标记语法设置为方括号。见https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html

我不确定在您的情况下如何/在何处配置 FreeMarker。在 Java 中类似于configuration.setInterpolationSyntax(Configuration.SQUARE_BRACKET_INTERPOLATION_SYNTAX)and configuration.setTagSyntax(Configuration.SQUARE_BRACKET_TAG_SYNTAX),在.properties文件中类似于interpolation_syntax=square_bracketand tag_syntax=square_bracket


推荐阅读