curlのbashスクリプト変数

curlのbashスクリプト変数

私はここで簡単なものを見逃していると思いますが、それはすべてです。

これはコマンドラインでうまく機能し、必要な出力を提供します。

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

おすすめ記事