fix: 更新 delete_all_projects.sh 脚本以优化项目获取和展示逻辑

This commit is contained in:
2026-01-29 21:39:08 +08:00
parent 1be07db276
commit 4b7e604313
2 changed files with 46 additions and 26 deletions

View File

@@ -3,7 +3,7 @@
# 文件名: delete_all_projects.sh
# 描述: 删除 GCP 账户下的所有项目(危险操作)
# 作者: Cloud Tools Project
# 版本: 2.1.0(支持远程库加载)
# 版本: 2.1.1(支持远程库加载)
# 警告: 此操作不可逆,所有项目数据将永久丢失
# ============================================================================
@@ -90,32 +90,39 @@ readonly LOG_FILE="deleted_projects_$(date +%Y%m%d_%H%M%S).log"
log_set_file "$LOG_FILE"
#
# 获取并展示所有项目
# 获取所有项目 ID 列表
# 返回: 项目 ID 列表(每行一个),通过 stdout 返回
# 退出码: 0 成功1 失败
#
get_and_display_projects() {
# 获取所有项目
get_projects() {
log_warning "获取项目列表..."
local projects
projects=$(gcloud projects list --format="value(projectId)")
if [ -z "$projects" ]; then
log_warning "没有找到任何项目"
exit 0
return 0
fi
# 显示所有项目
log_warning "以下项目将被删除:"
echo "$projects" | nl
echo
# 统计项目数量
local project_count
project_count=$(echo "$projects" | wc -l)
log_warning "总计: $project_count 个项目"
echo "$projects"
}
#
# 显示项目列表(带编号)
# 参数: $1 - 项目列表(换行符分隔)
# 输出: 到 stderr
#
display_projects() {
local projects="$1"
local project_count
project_count=$(echo "$projects" | wc -l | tr -d ' ')
log_warning "以下项目将被删除:"
echo "$projects" | nl >&2
echo >&2
log_warning "总计: $project_count 个项目"
}
#
# 删除单个项目
#
@@ -154,13 +161,22 @@ main() {
exit 0
fi
# 获取并展示项目列表
# 获取项目列表
local projects
projects=$(get_and_display_projects)
projects=$(get_projects)
# 检查是否有项目
if [ -z "$projects" ]; then
log_warning "没有找到任何项目,退出"
exit 0
fi
# 显示项目列表
display_projects "$projects"
# 统计项目数量
local project_count
project_count=$(echo "$projects" | wc -l)
project_count=$(echo "$projects" | wc -l | tr -d ' ')
# 第二次确认
log_error "最后确认:您将要删除 $project_count 个项目!"
@@ -180,9 +196,9 @@ main() {
for project_id in $projects; do
if delete_project "$project_id" "$LOG_FILE"; then
((deleted_count++))
((deleted_count++)) || true
else
((failed_count++))
((failed_count++)) || true
fi
# 添加短暂延迟,避免 API 限制