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

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

다음 입력 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.txtclientId'sclientId

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에서 직접 코드 블록을 실행하세요.

관련 정보