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에게 감사드립니다. 공백이나 기타 특수 문자 때문에 쉘 스크립트가 멈추는 이유는 무엇입니까? 변수에 저장된 명령을 어떻게 실행할 수 있나요?