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

如何在Bash脚本中将多个参数存入变量传递给terraform等应用?

问题原因

该问题的核心是使用普通字符串变量存储多个命令参数,Bash在展开未加引号的字符串变量$CMD_ARGS时,无法正确将你拼接的空格识别为参数分隔符,会把整个字符串内容当作单个参数传递给terraform,因此出现将-var-file=a.json -var-file=b.json整体识别为第一个-var-file参数值的报错。

解决方案

改用Bash数组存储命令参数,每个参数作为数组的独立元素,调用命令时通过"${数组名[@]}"的格式展开数组,即可保证参数被正确拆分传递,修改后的代码如下:

VAR_FILES="a.json;b.json"
IFS=';'
read -ra ADDR <<< "$VAR_FILES"
# 声明数组类型的参数变量
declare -a CMD_ARGS
for i in "${ADDR[@]}"; do
    # 逐个将参数追加到数组中
    CMD_ARGS+=("-var-file=$i")
done

# 展开数组传递参数
terraform plan -input=false "${CMD_ARGS[@]}" -out=test.plan

这种方式是Bash中处理多动态参数的标准实践,天然支持参数值带空格、特殊字符的场景,不会出现字符串拼接带来的参数识别错误问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:57:00