linux - 如何在免费标记模板中有条件地设置环境变量
问题描述
我有一个带有一些导出语句的 .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>
解决方案
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_bracket
and tag_syntax=square_bracket
。
推荐阅读
- node.js - puppeteer - 错误:协议错误(Network.getResponseBody):找不到具有给定标识符的资源
- c# - 当我尝试创建 .NET Core 3.1 AWS Lambda 函数时出现“网络错误”
- python - 如何从另一个模块运行烧瓶服务器?
- gcc - makefile C 代码一步编译和链接,但需要两个单独的步骤
- xpath - 如何使用 XPath 或 CSS 选择器在 Nightwatch 测试中查找子字符串
- python - 如何反转 pow?
- java - 为命名空间 JAXB 指定前缀
- c++ - 初始化器周围缺少大括号 - 有效警告?
- python - 环境变量在设置 Python 后立即被删除
- reactjs - 如何更改辅助颜色同步融合反应调度程序组件