jq コマンドのシングルクォート内に変数を渡す

シェルで jq コマンドで変数を渡す際、jq コマンドで シングルクォート が使われているために期待通り変数を渡すことができない。

今回は jq コマンドのシングルクォート内に変数を渡す方法を紹介。

jq --arg image_tag $IMAGE_TAG

image_tag、$IMAGE_TAG は適宜変更。

最初の image_tag は jq 内で使うことができる変数名。

後ろの $IMAGE_TAG はシェル内で定義されている変数名。

この --arg オプションが、シェルの変数と jq の変数をうまく橋渡ししてくれる。

IMAGE_TAG='abcdeeeeeeeeeee'
DGST=`aws ecr list-images --repository-name ecr-repository | jq --arg image_tag $IMAGE_TAG -r '.imageIds[] | select(.imageTag == $image_tag) | .imageDigest'`
echo $DGST