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

Bash脚本中Terraform文件变量替换失败问题求助

解决Terraform文件占位符替换变量不生效的问题

问题出在shell单引号会阻止变量展开——你之前用单引号包裹sed的替换表达式,导致$Repository_Name没有被解析成实际值"test",而是直接作为字符串写入文件。

正确写法1:用双引号包裹sed表达式

让shell先展开变量,再传递给sed:

Repository_Name="test"

grep -rl '#{RepositoryName}#' --include *.tf |
  xargs gsed -i "s/#{RepositoryName}#/${Repository_Name}/g"

正确写法2:通过环境变量传递(适配特殊字符场景)

如果变量值包含/、&这类sed特殊字符,用环境变量更安全:

Repository_Name="test"

grep -rl '#{RepositoryName}#' --include *.tf |
  xargs env REPO_NAME="$Repository_Name" gsed -i 's/#{RepositoryName}#/\ENV{REPO_NAME}/g'

执行后,Terraform文件中的#{RepositoryName}#会被替换为实际值"test",最终得到:

RepositoryName = "test"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:34:52