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
. clientId's
동일한 json을 게시하고 싶지만 각각 다른 10개의 다른 항목이 있습니다 clientId
.
clientId's
다른 파일에서 읽을 수 있도록 이 파일을 충분히 일반화할 수 있는 방법이 있습니까 ? clientIds.txt
모든 파일 목록이 있고 각 json을 서버에 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에서 직접 해당 코드 블록을 실행했습니다.