はじめに
この記事ではjqにbash等のshellで定義した変数を渡す方法を記載します。
jqにシェルの変数を渡す方法
Bash等のシェルスクリプトで定義した変数の値をjqで参照するには、実行時にオプションで “–arg” を指定します。
jq Manual (development version)
jqにシェルの変数を渡したいときは、オプションで –arg を指定する。
–arg name value例えば "–arg foo 123" を指定すると、 "$foo" で参照できる。そのとき値はstringになる。https://t.co/miE5jeUO4e
— aiiro@ソフトウェア開発者 (@aiiro29) July 23, 2020
例えばシェルで “$BODY_TEXT” という変数を定義していた場合、次のように “–arg body $BODY_TEXT” を指定することで、selectを使用する際に “$body” としてシェルの変数の値を使用できます。
$ cat sample.json | jq --arg body $BODY_TEXT '.content | select( .body == $body )'