gcloud查询GCP文件夹时如何分别输出ID与displayName并处理空格
你当前的脚本会把gcloud返回的所有结果按任意空白符(空格、换行、制表符)拆分,循环时带空格的文件夹显示名会被拆分为多个独立项,无法正确匹配ID和显示名的对应关系,两个问题的解决方案如下:
1 直接拆分ID和显示名(原生方案,无需编解码)
利用gcloud输出多字段默认以制表符分隔的特性,逐行读取结果并拆分两个字段即可,自带空格兼容:
# 获取组织ID ORG=$(gcloud organizations list --format="value(name)") # 逐行读取文件夹列表,按制表符拆分ID和显示名 while IFS=$'\t' read -r FOLDER_ID FOLDER_DISPLAY_NAME do # 可根据需求单独使用两个变量 echo "文件夹ID: ${FOLDER_ID}" echo "文件夹显示名: ${FOLDER_DISPLAY_NAME}" echo "--------------------------" done < <(gcloud resource-manager folders list \ --organization="${ORG}" \ --format="value(ID,displayName)")
2 基于base64编解码的实现方案
如果你需要通过base64处理特殊字符场景,可以直接用gcloud内置的base64编码能力输出字段,循环时解码即可:
# 获取组织ID ORG=$(gcloud organizations list --format="value(name)") # 输出时直接将displayName编码为base64格式 while read -r FOLDER_ID ENCODED_DISPLAY_NAME do # 解码得到原始显示名 FOLDER_DISPLAY_NAME=$(base64 -d <<< "${ENCODED_DISPLAY_NAME}") echo "文件夹ID: ${FOLDER_ID}" echo "文件夹显示名: ${FOLDER_DISPLAY_NAME}" echo "--------------------------" done < <(gcloud resource-manager folders list \ --organization="${ORG}" \ --format="value(ID,displayName.encode(base64))")
内容的提问来源于stack exchange,提问作者NewKidOnTheBlock
相关产品推荐
相关产品推荐

