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

为何存在待新增资源时terraform plan仍始终返回退出码0

问题原因

1. 未给terraform plan添加-detailed-exitcode参数

你提到的「0=无变更成功、1=执行错误、2=有变更成功」的退出码规则,并非terraform plan的默认行为,只有显式添加-detailed-exitcode参数时才会启用该规则。默认状态下,只要terraform plan本身没有执行报错,不管是否存在待变更资源,都会返回退出码0。

2. Shell判断逻辑存在缺陷

Shell特殊变量$?仅保存上一条执行完成的命令的退出码,你在第一个if [ $? -eq 0 ]判断执行完成后,$?的值已经变成了[(即test命令)的执行结果,后续elif判断拿到的早已不是terraform plan的原始退出码,会导致整个判断逻辑完全失效。

修复方案

先调整terraform plan执行命令添加对应参数,同时提前把退出码存入自定义变量再做判断:

# 执行plan命令并保存退出码
terraform plan -detailed-exitcode
PLAN_EXIT_CODE=$?

# 基于保存的退出码做判断
if [ $PLAN_EXIT_CODE -eq 0 ]; then
    echo "No changes, not applying"
elif [ $PLAN_EXIT_CODE -eq 1 ]; then
    echo "Terraform plan failed"
    exit 1
elif [ $PLAN_EXIT_CODE -eq 2 ]; then
    echo "Terraform apply needed"
    # 此处可追加执行terraform apply的相关逻辑
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:54:04