たとえば、次は私のプログラムの出力です(気になっている場合はbspwm)。
{
"id": 29360131,
"splitType": "vertical",
"splitRatio": 0.5,
"birthRotation": 90,
"vacant": true,
"sticky": false,
"private": false,
"locked": false,
"presel": null,
"rectangle": {
"x": 0,
"y": 0,
"width": 1920,
"height": 1200
},
"firstChild": null,
"secondChild": null,
"client": {
"className": "Termite",
"instanceName": "termite",
"borderWidth": 1,
"state": "floating",
"lastState": "tiled",
"layer": "normal",
"lastLayer": "normal",
"urgent": false,
"visible": true,
"icccmFocus": true,
"icccmInput": true,
"minWidth": 10,
"maxWidth": 0,
"minHeight": 19,
"maxHeight": 0,
"wmStatesCount": 0,
"wmState": [],
"tiledRectangle": {
"x": 0,
"y": 0,
"width": 958,
"height": 1198
},
"floatingRectangle": {
"x": 638,
"y": 394,
"width": 642,
"height": 410
}
}
}
"state"
私はそれが真であることを確認したかった"tiling"
。この場合です"floating"
。
ベストアンサー1
ブールテストでjqを使用する
JSONが次の変数に保存されているとします。JSON、シェルプロンプトで次のことができます。
$ echo "$json" | jq '.client.state | test("tiling")'
false
コーパスには対応する値が含まれているため、falseを正しく返しますfloating
。
否定的なテスト
または値が次のようにテストしたい場合いいえ tiling
、| not
フィルタを使用してテストロジックを無効にできます。たとえば、
$ echo "$json" | jq '.client.state | test("tiling") | not'
true
クライアントの状態ではないため、これは正しくtrueを返しますtiling
。floating
価値抽出
フィルタが通常の方法で機能することを確認するには、jqを使用してネストされたキー値を解析することもできます。たとえば、
$ echo "$json" | jq .client.state
"floating"
その後、その情報を使用してテストとフィルタを検証できます。あるいは、追加のプロセスを作成しても問題ない場合は、その情報をシェルパイプラインからまたはにfgrep
渡します。fgrep -v