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

Linux终端导出Terraform list(strings)类型变量报错解决

Terraform通过环境变量传入list(string)类型变量的正确方案

报错根因

你之前的写法存在三个核心问题:

  • 环境变量值不符合HCL语法要求:list类型属于复杂类型,通过环境变量传值时内容必须是完整合法的HCL列表表达式,必须在外层包裹[]标识列表结构。你两次传入的值都只有逗号分隔的字符串元素,没有外层方括号,Terraform解析完第一个字符串后会把后面的逗号、其余元素判定为表达式外的多余字符,触发Extra characters after expression报错。
  • 首次命令存在shell语法错误:在bash等shell中,双引号内部直接书写未转义的双引号会被识别为字符串截断,实际导出的变量值是断裂的,才会触发Invalid number literal的解析错误。
  • 环境变量命名不符合Terraform默认规则:如果是依赖Terraform自动读取环境变量赋值,变量名必须以TF_VAR_为前缀,对应你名为example的变量,正确的环境变量名应为TF_VAR_example,你使用的VAR_example不会被Terraform自动识别为变量输入。如果你是通过自定义脚本读取该变量再传给Terraform的-var参数,可保留原有变量名。

可行的导出命令

优先使用单引号包裹整个HCL表达式,不需要额外转义内部双引号,写法最简单:

# 若使用Terraform自动读取环境变量的规则
export TF_VAR_example='["xyz", "abc", "123"]'

# 若你需要保留自定义的VAR_example变量名
export VAR_example='["xyz", "abc", "123"]'

如果你的字符串元素中本身包含单引号,可换用双引号包裹、内部双引号加反斜杠转义的写法,效果完全一致:

export TF_VAR_example="[\"xyz\", \"abc\", \"123\"]"

验证方法

导出后先执行echo $TF_VAR_example(替换为你实际使用的变量名),确认输出内容为完整的["xyz", "abc", "123"],再执行terraform plan即可正常解析变量,不会再触发之前的语法报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:57:14