consul模板从envvar扩展新行



在执政官模板中,我想用将要扩展的新行传递一个ENV var,因此"hellonworld"显示为:

hello
world

命令:VARIABLE="hellnworld" consul-template -template "in.tpl:out.txt" -once && cat out.txt

模板文件:{{ env "VARIABLE" }}

但是我得到

hellonworld

如果我调试模板,则显示n已转义为\n:

{{ env "VARIABLE" | spew_dump }}

"hello\nworld"

consul-template

{{ env "VARIABLE" | replaceAll "\n" "n" }}

假定新行是golang双引号字符串文字中的C-Escapen,则replaceAll领事模板函数1随时可用(类似于env),用U+000A换行(Nl)换行(lf)、换行(eol)、lf替换n

这是所讨论的spew_dump所显示的格式。

请注意,这仅替换n,而不是r或其他转义序列。


外壳内(早期版本)

在像"hellonworld"这样的双引号字符串中没有nC-Escape,但printf(1)有它——或者——如果你的shell支持它们,$''字符串(bash,zsh/z-shell)。

比较如何在sh中的字符串中使用换行符

示例:

示例#1:$''带引号的字符串

VARIABLE=$'hellonworld' consul-template -template "in.tpl:out.txt" -once && cat out.txt

示例2:printf(1)

VARIABLE="$(printf "hellonworld")" consul-template -template "in.tpl:out.txt" -once && cat out.txt

请注意,命令替换($(...))可能会删除后面的换行符。


  1. https://github.com/hashicorp/consul-template/blob/378ee4bf907cae0d41eebf6a854f5539a7de1987/template/funcs.go#L1173-L1177

相关内容

  • 没有找到相关文章

最新更新