VALUES=$(cat $JSON_FILE | jq '.["resources"] | map([.name,.type,.url])|.array')
我要设置此VALUES的范围。但它可能像一个字符串而不是二维数组。
echo VALUES is [ [ "br_wind_rain_tex_png", "image", "assets/language/zh-cn/bloodriver/gamescene/effect/xiayu/br_wind_rain_tex.png" ], [ "baccarat_goodWayListItemBg_png", "image", "assets/language/zh-cn/baccarat/game/baccarat_goodWayListItemBg.png" ] ]
#!/bin/bash
BASE_PATH="/Users/likun/source/data/ky_qipai/client/egret"
JSON_FILE=$BASE_PATH/resource/default_zh_cn.res.json
KEYS=$(cat $JSON_FILE | jq '.["groups"]|map(select(.name=="logo"))|.[0]|.keys|split(",")')
#echo $KEYS
VALUES=$(cat $JSON_FILE | jq '.["resources"] | map([.name,.type,.url])|.array')
echo $VALUES
for v in $VALUES
do
echo $v
for vv in $v
do
if [[ "$vv" == "image" ]]
then
echo $vv
fi
done
break
done
答案 0 :(得分:0)
如果在脚本中似乎是这种情况,如果您想使用脚本的for
循环遍历所有标量值,则可以使用以下模型:
#!/bin/bash
JSON='[ [ "br_wind_rain_tex_png", "image", "assets/language/zh-cn/bloodriver/gamescene/effect/xiayu/br_wind_rain_tex.png" ],
[ "baccarat_goodWayListItemBg_png", "image", "assets/language/zh-cn/baccarat/game/baccarat_goodWayListItemBg.png" ] ]'
jq '.. | scalars' <<< "$JSON" | while read -r value
do
echo "$value"
done
由于您尚未指出要实现的目标,因此,我指出,您可以完全避免shell循环,即使用jq对标量值执行所需的任何计算。