为何Terraform字符串插值语法会返回列表而非字符串?
Terraform字符串插值为何返回列表而非字符串?
这是因为Terraform的字符串插值语法${...}有个关键行为:如果插值表达式的结果是非字符串类型,Terraform会直接保留其原类型,而不是强制转换为字符串。
拿你给出的例子来说:
> "${[1,2,3]}" [ 1, 2, 3, ]
这里${}内部的[1,2,3]是一个列表类型,整个表达式本质上是直接引用这个列表值,而非把列表转成字符串再包裹。只有当插值内容和其他字符串内容拼接时,Terraform才会自动把非字符串值转为字符串。比如你写"当前列表:${[1,2,3]}",结果就会是字符串"当前列表:[1, 2, 3]"。
简单说,Terraform的插值语法不是单纯的字符串拼接工具,它会根据表达式的整体结构判断最终返回的类型——单一非字符串值的插值,会直接返回原类型。
内容的提问来源于stack exchange,提问作者Shuzheng
相关产品推荐
相关产品推荐

