私はここで簡単なものを見逃していると思いますが、それはすべてです。
これはコマンドラインでうまく機能し、必要な出力を提供します。
curl -X GET \
-H "X-Auth-Email: REDACTED" \
-H "X-Auth-Key: REDACTED" \
"https://api.cloudflare.com/client/v4/zones/aa5ac150d414359642d85f1aa434e5db/filters" | jq -r '.result[0] .id'
しかし、bashスクリプトで使用しようとすると、まったく出力が出ません。
FWRID="$(curl -X GET \
-H "X-Auth-Email: REDACTED" \
-H "X-Auth-Key: REDACTED" \
"https://api.cloudflare.com/client/v4/zones/aa5ac150d414359642d85f1aa434e5db/filters")" | jq -r '.result[0] .id'
echo "$FWRID"
どんな助けでも大変感謝します。
答え1
2番目のコマンドは、パイプに入る前にコマンドの置き換えを終了しますjq
。この呼び出しはjq
目的の値を解析するため、コマンド置換の一部にする必要があります。
FWRID=$(
curl -X GET \
-H 'X-Auth-Email: REDACTED' \
-H 'X-Auth-Key: REDACTED' \
'https://api.cloudflare.com/client/v4/zones/aaxxx/filters' |
jq -r '.result[0] .id'
)
元のコマンドでは、jq
コマンド置換の外部からjq
変数割り当ての出力を読み込み、FWID
そこからいくつかの結果が生成されます。割り当ては出力を生成しないので、まったく興味深いことはしません。
また、元のコマンドの割り当てはパイプラインの一部であるため、サブシェルで実行されるため、$FWID
以降の呼び出しでは値が空になるか、少なくとも変更されませんecho
。