Shell脚本需求:提取JSON文件中的packageId值并存储到变量
别担心,提取这个JSON里的packageId其实有几种简单易上手的方案,不用纠结复杂的Shell脚本语法,我给你整理两个常用的方法:
方法1:用
jq工具(推荐,最稳定可靠) jq是专门用来处理JSON数据的工具,语法直观,能完美应对各种JSON结构,是处理这类需求的首选。
步骤:
先检查你的系统有没有安装
jq,在终端输入:which jq如果没安装,根据你的系统装一下:
- Ubuntu/Debian:
sudo apt install jq - CentOS/RHEL:
sudo yum install jq - Mac:
brew install jq
- Ubuntu/Debian:
提取
packageId并存到变量里:
假设你的JSON内容保存在文件output.json中,执行以下命令:package_id=$(jq -r '.[0].properties.packageId' output.json)要是你的JSON是直接的字符串(不是文件),可以这么写:
json='[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1},"path":"app-debug.apk","properties":{"packageId":"com.abc.def","split":"","minSdkVersion":"17"}}]' package_id=$(echo "$json" | jq -r '.[0].properties.packageId')验证结果:
输入echo $package_id,就能看到输出com.abc.def啦,之后你就可以在脚本里用$package_id引用这个变量。
方法2:没有
jq?用awk/sed临时处理(仅限结构固定的情况) 如果没法安装jq,可以用文本处理工具临时提取,但要注意:这种方法只适合JSON结构完全固定的场景,如果JSON格式有变化(比如换行、空格调整)可能失效。
用awk的命令:
package_id=$(awk -F'"' '/"packageId"/{print $4}' output.json)
用sed的命令:
package_id=$(sed -n 's/.*"packageId":"\([^"]*\)".*/\1/p' output.json)
同样执行echo $package_id就能看到结果啦~
内容的提问来源于stack exchange,提问作者Son Nguyen
相关产品推荐
相关产品推荐

