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

Shell中如何将HCL格式的tags变量转换为tfh命令所需参数格式

解决方案

调整后可用的完整脚本

#!/bin/bash

[[ -z "$1" ]] && echo "==> Usage: ./transform_tfe_vars.sh <INPUT_FILE>" && exit 1;

vars_file=${1}
tmp_file=".todelete.tmp"

# 预处理:过滤注释、空行,提取所有键值对行并清理格式
grep -v '^#' "$vars_file" | awk '!/^$/' | grep -E '=' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//;s/,$//' > "$tmp_file"

# 拼接所有键值对为单个符合要求的字符串
kv_pairs=""
while read -r p; do
    # 按等号分割提取键和值,自动忽略等号前后的空格
    a=$(echo "$p" | awk -F'[[:space:]]*=[[:space:]]*' '{print $1}')
    b=$(echo "$p" | awk -F'[[:space:]]*=[[:space:]]*' '{print $2}' | sed 's/"//g')
    # 拼接键值对,添加转义双引号
    if [ -z "$kv_pairs" ]; then
        kv_pairs="${a}=\\\"${b}\\\""
    else
        kv_pairs="${kv_pairs}, ${a}=\\\"${b}\\\""
    fi
done < "$tmp_file"

# 输出最终符合要求的命令
echo "tfh pushvars -overwrite-all -dry-run false -hcl-var \"tags={${kv_pairs}}\""

# 清理临时文件
rm -f "$tmp_file"

核心修改点说明

  • 修正了原脚本的参数拼写错误:将错误的shcl-var替换为正确的hcl-var
  • 调整了处理逻辑:不再逐行生成命令,而是把所有键值对拼接为单个字符串后,统一放到tags={}结构内部
  • 优化了键值提取规则:使用等号作为分隔符,自动忽略等号前后的空格,同时删除值两端原有的双引号后,统一添加转义格式的双引号
  • 预处理阶段自动清理键值对行尾的逗号和多余空格,避免拼接后出现格式错误

你直接将存储tags定义的文件作为参数传入脚本执行,即可得到目标格式的命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:24:02