シェル出力をJSONに変換するには?

シェル出力をJSONに変換するには?

以下にこの出力があり、それをJSON API形式に変換したいと思います。どうすればいいのか知りたいです。

 rock64@rockpro64:~$ sh MACscript.sh 
 eth0
   11:1d:11:11:11:1d
 lo
   00:00:00:00:00:00

Pythonスクリプトを使用する必要がありますか、それともシェルスクリプトを使用して実行できますか?

これは私のMACshellスクリプトです。

 rock64@rockpro64:~$ cat MACscript.sh 
 !/bin/bash
 getmacifup.sh: Print active NICs MAC addresses
 D='/sys/class/net'
 for nic in $( ls $D )
 do
   echo $nic
   if  grep -q unknown $D/$nic/operstate
   then
    echo -n '   '
    cat $D/$nic/address
  fi
 done

ベストアンサー1

通常のbashを使用すると、次のようにできます。

json=$(
    sh MACscript.sh | {
        pairs=()
        while read interface; read ether; do
            pairs+=("\"$interface\":\"$ether\"")
        done
        IFS=,
        echo "{${pairs[*]}}"
    }
)
echo "$json"

出力

{"eth0":"11:1d:11:11:11:1d","lo":"00:00:00:00:00:00"}

おすすめ記事