템플릿 파일을 즉시 수정하고 컬을 사용하여 서버에 게시하시겠습니까?

템플릿 파일을 즉시 수정하고 컬을 사용하여 서버에 게시하시겠습니까?

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있는 템플릿으로 파일을 사용할 수 있으며 이를 서버에 게시할 수 있지만 쉘 스크립트에서 이 작업을 어떻게 수행할 수 있는지 잘 모르겠습니다.clientIdclientIds.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에서 직접 해당 코드 블록을 실행했습니다.

관련 정보