다음 입력 temp.txt
파일이 있고 컬을 사용하여 게시해야 합니다.
{
"query":"\n{\n data(clientId: 1234, filters: [{key: \"o\", value: 100}], key: \"world\") {\n title\n type\n pottery {\n text\n pid\n href\n count\n resource\n }\n }\n}"
}
파일을 가져와서 서버에 게시하는 방법은 다음과 같습니다. 모든 것이 문제 없이 잘 작동합니다.
curl 'url' \
-H 'Accept-Encoding: gzip, deflate, br' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Connection: keep-alive' -H 'DNT: 1' \
-H 'Origin: url' \
--data-binary "@/Users/david/Downloads/temp.txt" \
--compressed \
--silent \
--output /dev/null \
--write-out '%{http_code}'
clientId's
이제 위 파일에 표시된 대로 여러 컬 요청을 발행하려고 합니다 temp.txt
. 나는 약 10개의 다른 항목을 가지고 clientId's
있으며 각각의 다른 json에 대해 동일한 json을 게시하고 싶습니다 clientId
.
예를 들어 모든 목록을 포함하는 clientId's
다른 파일에서 읽을 수 있고 각 json을 서버에 게시할 수 있도록 이것을 충분히 일반화할 수 있는 방법이 있습니까 ?clientIds.txt
clientId's
clientId
clientIds.txt
파일의 내용을 다음과 같이 설정할 수 있습니다 .
1234
9812
6751
2181
이제 각 파일에 대해 이러한 json을 만들어 clientId
서버에 게시해야 합니다. 이것이 가능한가? 파일에서 필드를 채운 다음 서버에 게시할 수 temp.txt
있는 템플릿으로 파일을 가질 수 있지만 쉘 스크립트에서 이 작업을 수행하는 방법을 잘 모르겠습니다.clientId
clientIds.txt
고객 ID: 9812
{
"query":"\n{\n data(clientId: 9812, filters: [{key: \"o\", value: 100}], key: \"world\") {\n title\n type\n pottery {\n text\n pid\n href\n count\n resource\n }\n }\n}"
}
고객 ID: 6751
{
"query":"\n{\n data(clientId: 6751, filters: [{key: \"o\", value: 100}], key: \"world\") {\n title\n type\n pottery {\n text\n pid\n href\n count\n resource\n }\n }\n}"
}
고객 ID: 2181
{
"query":"\n{\n data(clientId: 2181, filters: [{key: \"o\", value: 100}], key: \"world\") {\n title\n type\n pottery {\n text\n pid\n href\n count\n resource\n }\n }\n}"
}
고쳐 쓰다
Bash 스크립트에서 비슷한 것을 시도했지만 몇 가지 사항에 대해 혼란스러워서 제대로 작동하지 못했습니다. 각 clientId에 대한 템플릿 json 파일을 바꾼 다음 컬을 사용하여 해당 json을 서버에 게시하려면 어떻게 해야 합니까?
while IFS= read -r line; do
# this below line isn't working
cat temp.txt | sed 's/clientId:[^ ]*/clientId:$line/'
# and how should I use new json to post curl
done < clientIds.txt
답변1
목록을 반복하는 bash 파일을 만들 수 있습니다.
#!/bin/bash
for word in $(< clientIds.txt)
do
echo "curl $word"
done
해당 명령을 echo curl
작업 중인 컬 명령으로 바꾸십시오. 단,$word변수는 다음클라이언트 ID~을 위한
또는 cli에서 직접 코드 블록을 실행하세요.