OpenWrt的jshn.sh处理数字会自动加0,jsonfilter和自写函数parse_json都可以解决此问题。#!/bin/sh
. /usr/share/libubox/jshn.sh
json_init
function parse_json()
{
echo $1 | \
sed -e 's/[{}]/''/g' | \
sed -e 's/", "/'\",\"'/g' | \
sed -e 's/" ,"/'\",\"'/g' | \
sed -e 's/" , "/'\",\"'/g' | \
sed -e 's/","/'\"---SEPERATOR---\"'/g' | \
awk -F=':' -v RS='---SEPERATOR---' "\$1~/\"$2\"/ {print}" | \
sed -e "s/\"$2\"://" | \
tr -d "\n\t" | \
sed -e 's/\\"/"/g' | \
sed -e 's/\\\\/\\/g' | \
sed -e 's/^[ \t]*//g' | \
sed -e 's/^"//' -e 's/"$//'
}
jd='{"mcid":1,"pid":"","errorcode":"0","status":0,"info":{"filename":"b11.2.tar.gz","version":1.20}}'
aaa=`jsonfilter -s $jd -e @.info.version`
echo 'aaa:'$aaa
echo 'ver1:'` parse_json $jd version`
json_load "$jd"
json_select info
json_get_var version version
echo 'version:'$version
支付宝扫码打赏
微信打赏