获取当前项目并保存
# 1. 一键把当前 GCP 账号下的项目导出到 projects 文件
gcloud projects list --format="value(projectId)" > projects
2. (非常重要) 打开 projects 检查并删掉你需要保留的项目
nano projects3. 新建删除脚本
nano delete.sh
#!/bin/bash
# 获取当前脚本所在目录与项目文件路径
WORK_DIR="$(cd "$(dirname "$0")" && pwd)"
FILENAME="$WORK_DIR/projects"
# 1. 校验文件是否存在
if [ ! -f "$FILENAME" ]; then
echo "❌ 错误: 未找到 $FILENAME 文件!"
echo "请先使用 'gcloud projects list --format=\"value(projectId)\" > projects' 生成文件。"
exit 1
fi
# 2. 读取项目 ID 列表并清理空行与前后空格
projects=()
while IFS= read -r line || [ -n "$line" ]; do
# 过滤掉纯空行或只有空格的行
clean_line=$(echo "$line" | xargs)
if [ -n "$clean_line" ]; then
projects+=("$clean_line")
fi
done < "$FILENAME"
# 3. 校验列表是否为空
if [ ${#projects[@]} -eq 0 ]; then
echo "⚠️ 警告: $FILENAME 文件为空,没有可删除的项目。"
exit 0
fi
# 4. 安全确认提示(展示即将删除的项目)
echo "=================================================="
echo "⚠️ 注意!即将在当前 Google Cloud 账号中删除以下 ${#projects[@]} 个项目:"
echo "=================================================="
for proj in "${projects[@]}"; do
echo " - $proj"
done
echo "=================================================="
read -p "确认全部彻底删除?(输入 y 继续,其他任意键取消): " confirm
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
echo "❌ 操作已取消。"
exit 0
fi
# 5. 逐个进行后台并发删除
echo -e "\n🚀 开始提交删除任务...\n"
for proj in "${projects[@]}"; do
echo "正在提交删除任务: $proj"
# --quiet 参数实现免交互自动确认,不再需要 setsid 和 yes 文件
gcloud projects delete "$proj" --quiet &
sleep 1
done
# 6. 等待所有后台任务结束
echo -e "\n⏳ 等待所有 GCP 响应删除指令..."
wait
echo -e "\n✅ 所有项目的删除请求已提交完毕!"
4. 赋予执行权限并运行删除脚本
chmod +x delete.sh
./delete.sh