如何跳过Cloudflare资源生成错误并继续执行脚本
解决Cloudflare资源生成脚本遇错终止的问题
问题原因
你的脚本启用了set -e选项,这个设置会让bash脚本在任意命令执行失败时直接终止运行,导致后续资源无法被处理。加上cloudflare_access_mutual_tls_certificate资源调用API时出错,直接触发了脚本退出。
解决方案
要实现单个资源生成失败时跳过、继续处理后续资源,有两种简单的处理方式:
方式1:移除全局错误终止设置
直接删除脚本中的set -e行,这样即使某个命令执行失败,脚本也会继续执行循环的下一次迭代。
方式2:针对单个命令添加错误忽略(推荐)
保留set -e(如果需要其他命令执行失败时终止脚本),但在cf-terraforming generate命令后添加错误处理逻辑,强制该命令失败时不终止脚本:
修改后的脚本如下:
#!/bin/bash set -e examplearray=("cloudflare_access_application" "cloudflare_access_bookmark" "cloudflare_access_ca_certificate" "cloudflare_access_group" "cloudflare_access_identity_provider" "cloudflare_zone_settings_override") for example in "${examplearray[@]}"; do echo Extracting $example ... # 命令失败时输出错误提示,并返回true让脚本继续执行 cf-terraforming generate --resource-type "$example" > "$example.txt" || { echo "Failed to extract $example, skipping..." true } done
额外说明
- 循环中数组引用改为
"${examplearray[@]}",避免资源名称包含特殊字符时出现解析问题 - 针对报错的
cloudflare_access_mutual_tls_certificate资源,建议检查:- 资源类型名称是否正确(比如是否应为
cloudflare_access_ca_certificate) - 你的Cloudflare账户是否有权限访问该资源的API端点
- 账户中是否存在该类型的资源(若没有,生成命令也会执行失败)
- 资源类型名称是否正确(比如是否应为
内容的提问来源于stack exchange,提问作者user5820327
相关产品推荐
相关产品推荐

