![컬 명령은 쉘 스크립트를 사용하여 사용자 입력을 받아 동적으로 호출할 수 없습니다.](https://linux55.com/image/203616/%EC%BB%AC%20%EB%AA%85%EB%A0%B9%EC%9D%80%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%9E%85%EB%A0%A5%EC%9D%84%20%EB%B0%9B%EC%95%84%20%EB%8F%99%EC%A0%81%EC%9C%BC%EB%A1%9C%20%ED%98%B8%EC%B6%9C%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
아래와 같은 컬 명령을 원합니다
curl --location --request POST 'https://abcd.com/api/v4/projects/<projectId>/triggers' \
--header 'PRIVATE-TOKEN: <your_access_token>' \
--form 'description="my description"'
이제 동적으로 생성하는 쉘 스크립트 함수를 작성했습니다.
Pramter로 projectId, 토큰 및 설명이 필요합니다.
callApi(){
while IFS="," read -r -a users; do
for u in "${users[@]}"
do
url="'https://abcd.com/api/v4/projects/$1/triggers'"
echo $url
header="'PRIVATE-TOKEN: $2'"
echo $header
desc="'description=$u token'"
echo $desc
tk=$(curl --location --request POST $url \
--header $header \
--form $desc)
echo $tk
done
done <<< $(cat $3)
}
callApi "<projectId>" "<token>" ./users.csv
완벽하게 에코되지만 오류가 발생합니다.
답변1
승인된 답변 보기변수에 저장된 명령을 어떻게 실행할 수 있나요?
이러한 문제에 직면한 이유는 단어 분할 때문이며, 변수에서 확장된 따옴표는 따옴표로 작동하지 않고 일반 문자로만 작동합니다.
컬 명령을 작성할 때 일반적으로 다음 형식을 따르며 각 부분을 배열에 할당합니다.
url_request=("https://abcd.com/api/v4/projects/$1/triggers")
url_body=(--form "$desac")
url_header=(--header "PRIVATE-TOKEN: $2")
url+=("${url_request[@]}" "${url_body[@]}" "${url_header[@]}")
response=$(curl -s "${url[@]}")