根据文档,我期望heredoc和缩进heredoc以不同的方式处理缩进。但他们似乎在做同样的事情。令人惊讶的是,缩进的定界文档不会根据定界文档正文中第一行文本的缩进级别来修剪前导空格。
这是我的代码:
locals {
here = <<EOF
One
two
three
four
EOF
}
locals {
here_indented = <<-EOF
One
two
three
four
EOF
}
output "here" {
value = local.here
}
output "here_indented" {
value = local.here_indented
}
这是输出:
+ here = <<-EOT
One
two
three
four
EOT
+ here_indented = <<-EOT
One
two
three
four
EOT
我的期望:
我尝试将输出打印为插值字符串
"${heredoc_indented}"
,但结果是相同的。
我在这里做错了什么?
“缩进定界符”的特殊附加处理是计算每行开头的空格字符数,找到空格数最少的行,然后从所有行的前缀中删除该空格数。其他线路。
例如,使用以下输入:
foo = <<-EOT
hello
world
EOT
“hello”行以四个空格开头,“world”行以六个空格开头。因此,最小空格数为 4,因此 Terraform 从每行开头删除了 4 个空格。
在结果中,“hello”行以 4-4=0 个空格开头,而“world”行以 6-4=2 个空格开头。
现在让我们考虑一下您问题中的示例:
locals {
here_indented = <<-EOF
One
two
three
four
EOF
}
在这种情况下,“一”行以 zero 空格开头,因此这是最少的空格数。因此,Terraform 从每行的开头删除了 zero 空格,使得这种特殊情况的行为本质上与非缩进的定界文档相同。