오프셋 증분을 사용하는 컬 스크립트

오프셋 증분을 사용하는 컬 스크립트

컬 스크립트에서 오프셋을 늘리는 방법은 무엇입니까?

내 스크립트는 다음과 같습니다

#!/bin/bash
curl -a --silent --header "api-key: 4444444455" --header "accept: application/xml" --header "cache-control: no-store" "https://gghghghg.com/api/invoices?supplier%5Bid%5D%5Bnot_eq%5D=109789%3F&limit=50&offset=150" >  /bi01/In_API_Call_Data.txt 2>&1 
exit 0

답변1

나는 당신이 원하는 것 같아요오프셋150에서 155로 바꾸고 더 잘 설명할 수 있도록 명령을 줄입니다.

당신은 추가할 수 있습니다오프셋for루프를 사용 하고 변수를 i다음과 같이 사용하십시오.오프셋:

for i in {150..155}; do
    curl --header "kk: vv" "http://example.com/path&offset=$i" >outfile$i 2>&1
done

노트:

  • 모든 사람의 모든 답글을 보관하고 싶다고 가정하고 을 입력합니다 $i.>outfile$i공격. $i파일 이름이 없으면 모든 curl호출은 동일한 파일에 쓰고 덮어쓰며 최종 curl결과만 유지됩니다.
  • >outfile$i 2>&1대신 사용할 수 있지만 &>outfile$i일부 (이전) 쉘에서는 작동하지 않을 수 있습니다.
  • forfor ((i=150; i<=155; ++i)); do같은 목적을 달성하기 위해 like 또는 를 사용할 수 있습니다 for i in $(seq 150 155); do. 일부 양식은 더 읽기 쉽고 친숙할 수 있지만 이 경우에는 차이가 없습니다.
  • 이와 같은 경우 중괄호 확장을 사용하고 다음에 대한 여러 URL을 만드는 것이 더 간단합니다 curl.

    curl --header "kk: vv" "http://example.com/path&offset="{150..155} >>outfile 2>&1
    

    그러나 각 응답을 별도의 파일에 쓸 수는 없습니다. 대신에 >>.

답변2

#!/bin/bash
for i in {0..150,160}; do
  curl -asH "api-key: 4444444455" -H "accept: application/xml" -H "cache-control: no-store" "https://gghghghg.com/api/invoices?supplier%5Bid%5D%5Bnot_eq%5D=109789%3F&limit=50&offset="$i >/bi01/In_API_Call_Data.txt 2>&1
done
exit 0

간단한 for루프를 사용하여 URL을 변경할 수 있습니다. 위의 예에서는 모든 숫자를 0및 에 가져옵니다 .150160

관련 정보