<div dir="ltr"><div dir="ltr"></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Apr 23, 2020 at 12:55 PM Michael Jones <<a href="mailto:mike@meshplusplus.com">mike@meshplusplus.com</a>> wrote:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I'm quite reluctant to do multiple processing sweeps. E.g. the following (probably syntax-error-full, and erroneous output) shell script is extremely unattractive<br></div><div><br></div><div>json=`ubus call network.interface dump | jsonfilter -e '@.interface'`</div><div>echo '['</div><div>for itf in $(echo $json  | jsonfilter -e '@[@.up=true].interface')<br></div><div>do</div><div>    echo "{ \"interface\" : \"$itf\" , \"uptime\" : $(echo $json  | jsonfilter -e "@[@.interface=$itf].uptime") }," # Oh look, an unconditional trailing comma... that won't parse until JSON5...</div><div>done</div><div>echo ']'</div><div><br></div></div></blockquote><div><br></div><div>I suppose I should follow my original email up with an acknowledgement of the jshn.sh library (and jshn program).</div><div><br></div><div>So I know that the script could be improved to work (and work correctly) like this:</div><div><br></div>. /usr/share/libubox/jshn.sh<br>json_init<br>json_add_array arr<br><br>jsonoutput=`ubus call network.interface dump | jsonfilter -e '@.interface'`<br><br>for itf in $(echo $jsonoutput | jsonfilter -e '@[@.up=true].interface')<br>do<br>    json_add_object<br>    json_add_string interface $itf<br>    json_add_int    uptime    $(echo $jsonoutput | jsonfilter -e "@[@.interface='$itf'].uptime")<br>    json_close_object<br>done<br><br>json_close_array<br><div>json_dump | jsonfilter -e '@.arr'</div><div><br></div><div><br></div><div>But I didn't want to muddle the question of "can I do what I want with jsonfilter by itself", because I don't want to involve the use of a shell script at all if I can avoid it!</div><div><br></div></div></div>