Amazon Fire HD 10 タブレット - 10インチHD ディスプレイ 32GB パープル
¥19,980 (2025年4月29日 13:11 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)USB Cケーブル【1M 2本セット】 USB A to USB-C 急速充電 タイプc ケーブル 高耐久 PD対応 断線防止 データ転送 Type-c コード for iPhone 16/15 Pro/Plus/Pro Max、for MacBook Pro/Air/IPad Pro 12.9/11/Air 5th/4th Mini などTypec機種対応
¥999 (2025年4月29日 13:06 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)
結論
jqの1.6以前では、jqコマンドの–argのvalueに20バイト以上のASCII文字列を渡すと空になるバグがあった(1.7では改善済み)です。
jqコマンドとは
https://jqlang.org/ によると、
jq is like sed for JSON data – you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text.
とのことで、要約するとJSON データ用のsedのようなものとのことです。
jqコマンドについては、@takeshinoda@githubさんの記事に詳しく記載されていますので、ぜひご覧ください。
沼った経緯
以前執筆した記事の続きで、CodeBuildでメンテナンスの時刻を返すためにjqを使ってbashを実行するようにしていました。しかし、下記の実行環境だとjq --arg start "$MAINTENANCE_START" --arg end "$MAINTENANCE_END"
の部分がうまく変換されず、中身が空になってしまっていました。
<失敗時の環境>
・オペレーティングシステム:Ubuntu
・ランタイム:Standard
・イメージ:aws/codebuild/standard:5.0(6.0/7.0も同様)
反対に以下の環境だと、jqが期待通りの値に変換され、実行環境が問題なのかと頭を悩ませていました。
<成功時の環境>
・オペレーティングシステム:Amazon Linux
・ランタイム:Standard
・イメージ:x86_674-standard:5.0
調査結果
調査を進めるとOSやイメージが原因ではなく、jqの1.6か1.7かで挙動が変わっていました。
具体的には、失敗していた環境ではjq1.6を使用しており、成功した環境ではjq1.7を使用していました。
コミットを以下で確認したところ、NUL終端を誤認して文字列の長さを0と見なすバグが修正されているようでした。
おわりに
なかなか同じ事象にあっている方は少ないと思われますが、もし同じ事象にあっている方はjq1.7以降を利用することをおすすめします。
Views: 0