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

如何编写Bash脚本从variables.tf提取内容生成指定格式terraform.tfvars

问题解决方法

你出现顺序颠倒的核心原因是:variables.tf 中每个变量块的结构是先声明变量名,再定义description属性,而你当前的脚本是逐行匹配到内容就直接写入文件,自然会先输出变量赋值行,再输出注释行。

修改思路也很简单:新增一个临时变量暂存每次读到的变量名,等匹配到对应description的时候,再按「先输出注释、后输出变量赋值」的顺序写入文件即可。

修改后的完整脚本如下:

#!/bin/bash
# 先清空目标文件避免内容残留
> terraform.tfvars
# 定义临时变量存储读取到的变量名
CURRENT_VAR=""

grep 'description\|variable' variables.tf | while read line; do 
    OUTPUT=$(echo "$line" | sed 's/ =//g; s/ {//g' )
    case "$OUTPUT" in 
      *variable*)
        # 读到变量名先暂存,不直接输出
        CURRENT_VAR=$(echo "$OUTPUT" | awk -F "\"" '{print $2}')
        ;;
      *description*)
        DESCRIPTION=$(echo "$OUTPUT" | awk -F "\"" '{print $2}')
        # 按要求顺序先输出注释,再输出变量赋值
        echo "#$DESCRIPTION" >> terraform.tfvars
        echo "$CURRENT_VAR = \"\"" >> terraform.tfvars
        # 每组配置之间加空行,和示例格式对齐,不需要可以删掉这行
        echo "" >> terraform.tfvars
        ;;
    esac    
done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:24:01