使用jq工具从模型获取android代号

时间:2019-12-05 20:57:40

标签: json jq

尝试从https://github.com/jaredrummler/AndroidDeviceNames获取具有其型号和品牌的特定android设备的代号:

$ brand=ACER
$ model=B3-A20B
$ \curl -Ls https://github.com/jaredrummler/AndroidDeviceNames/raw/master/json/manufacturers/$brand.json | \
jq ".devices[].codename | select( .devices[].model == \"$model\" )" 
jq: error (at <stdin>:1114): Cannot index string with string "devices"
$ echo $?
5

编辑1:对于那些可能感兴趣的人,我感谢@ jeff-mercado在我的.bash_functions中编写了这个bash函数:

getCodeName () {
    if [ $# != 2 ]; then
        echo "=> Usage: $FUNCNAME brand model" >&2
        return 1
    fi

    local brand=$1
    local model=$2
    local codeNameJSONDataBaseURL=https://github.com/jaredrummler/AndroidDeviceNames/raw/master/json/manufacturers
    local curl="$(which curl) -sL"

    $curl $codeNameJSONDataBaseURL/$brand.json | jq -r --arg model $model '.devices[] | select( .model | match($model;"i") ).codename'
}

1 个答案:

答案 0 :(得分:1)

通过在过滤器之间使用管道,您可以将输入上下文更改为先前过滤器产生的值。在您到达select/1调用时,输入就是代号值。您需要先将上下文保留在设备上,然后根据模型进行选择,然后获取代号。

$ ... | jq --arg model "$model" '.devices[] | select(.model == $model).codename'