#linux #bash #templates #freemarker
#linux #bash #шаблоны #freemarker
Вопрос:
У меня есть .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>
Ответ №1:
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
.