You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Terraform中将元组转换为无转义双引号的字符串型字符串?

Terraform 动态生成带单引号的服务器列表字符串

问题背景

最初尝试将服务器元组转换为带双引号的字符串时,使用format("%q", i)会生成带转义符的结果\"xxx\", \"yyy\", \"zzz\",直接拼接又无法保留引号。后续明确核心需求:要动态将服务器列表传入format函数,生成格式为'xxx' 'yyy' 'zzz'的字符串,但多次尝试format_data的拼接方式均未达到预期。

原尝试代码:

locals {
  servers = [
    "xxx", "yyy", "zzz"
  ]

  format_type = join(" ", [for i in local.servers : "'%s'"])

  format_data = join(",", [for s in local.servers : format("\"%v\"", s)]) # 结果为"\"xxx\",\"yyy\",\"zzz\""
}

output "testing" {
  value = format(local.format_type, local.format_data)
}

解决方案

问题出在错误地将服务器列表拼接成单个字符串传入format,而format要求每个%s占位符对应一个独立参数。正确做法是使用Terraform的展开运算符...,将服务器列表的元素作为独立参数传递给format:

locals {
  servers = ["xxx", "yyy", "zzz"]
  # 生成对应数量的'%s'占位符,并用空格连接
  format_type = join(" ", [for _ in local.servers : "'%s'"])
}

output "testing" {
  # 使用...展开servers列表,每个元素对应一个%s占位符
  value = format(local.format_type, local.servers...)
}

效果验证

执行后输出结果为:

'xxx' 'yyy' 'zzz'

内容的提问来源于stack exchange,提问作者Theo Sweeny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 18:42:42