如何在Bash中从JSON输出提取两个属性值并分配给专属变量
更简洁的Bash变量赋值方案
你可以直接通过read命令一步完成两个变量的赋值,省去中间数组的中转步骤,以下是几种更简洁的实现方式:
基础简洁版
适用于应用名称不含空格的场景:
read -r APP_ID APP_DISPLAY_NAME < <(az ad sp show --id "$spn_id" --query '[appId, displayName]' -o tsv | tr -d '\r')
兼容含空格名称的版本
如果应用的显示名称包含空格,指定制表符作为分隔符(TSV的默认分隔符)可以确保名称被完整读取:
IFS=$'\t' read -r APP_ID APP_DISPLAY_NAME < <(az ad sp show --id "$spn_id" --query '[appId, displayName]' -o tsv | tr -d '\r')
说明
- 使用
< <()是为了避免子shell环境导致变量无法在当前shell中生效; -r参数防止read命令解析输入中的转义字符;tr -d '\r'用于处理Windows风格的换行符(如果你的环境存在这类问题)。
验证效果:
echo "$APP_ID" echo "$APP_DISPLAY_NAME"
内容的提问来源于stack exchange,提问作者mark
相关产品推荐
相关产品推荐

