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に感謝します。 スペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか? 変数に保存されたコマンドをどのように実行できますか?