bash関数の中のカールは--dataに「不明なオプション」を提供します。

bash関数の中のカールは--dataに「不明なオプション」を提供します。

bash関数内でカールするために--data-rawオプションを渡そうとすると、不明なオプションエラーが発生します。

function api_call () {
    local data="$5"
        echo $(curl -L -X $1 "https://api.datadoghq.com/api/v1/monitor/$2" \
          -H "Accept: application/json" \
          -H "Content-Type: application/json" \
          -H "DD-API-KEY: $3" \
          -H "DD-APPLICATION-KEY: $4" \
          $data)
}

私はそれをそう呼ぶ。

api_call "PUT" $monitor_id $DATADOG_API_KEY $DATADOG_APP_KEY $query

私のクエリ値は

query="--data-raw '{"query":"sum(last_1m):avg:application.health{application.health:healthy,c_name:nname,!source:service-full-1} by {source}.as_count() < 60"\}')"

ところで、どのデータを入力しても関数呼び出し時には受け付けられません。単にカールすると、期待通りに動作します。

私は何を見逃していますか?ありがとうございます!

ベストアンサー1

コメントの全員が指摘したように、シェルは変数を分割し、コマンドとして実行されません。これについて詳しく説明する非常に便利なリンクを提供した@Kamil Maciorowskiに感謝します。 スペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか? 変数に保存されたコマンドをどのように実行できますか?

おすすめ記事