シェルスクリプト jq

'{"name": "Unknown", "age": 45}' を ?name="Unknown"&age=45 にしたい。

キーを抜き出す。 $ echo '{"name": "Unknown", "age": 45}' | jq keys [ "age", "name" ]

キー名を取る。 $ echo '["age","name"]' | jq -r .[0] age

#!/bin/sh


echo '{"name": "Unknown", "age": 45}' | jq .

json='{"name": "Unknown", "age": 45}'


keys=`echo ${json} | jq keys`
len=`echo ${json} | jq length`

N=`expr ${len} - 1`

args=?

for i in `seq 0 ${N}`
do
#    echo i=${i}
    key=`echo ${keys} | jq -r .[$i]`
    echo ${key}
    val=`echo ${json} | jq .${key}`
    echo ${val}

    if [ ${i} -ne ${N} ]; then
        args=${args}${key}=${val}\\\&
    else
        args=${args}${key}=${val}
    fi
done

echo ${args}

実行結果

$ ./test.sh
{
  "age": 45,
  "name": "Unknown"
}
age
45
name
"Unknown"
?age=45\&name="Unknown"