For 루프 문제가 출력되는 중입니다.

For 루프 문제가 출력되는 중입니다.
for a in {P02183606,P02183608,sassa}
do
    for b in {PID,PID2,sas}
    do
        echo "http://indiafirstlife.com//onlineInsurance-rest/uploadDocument/uploadDocumentsOmniMannualPush?applicationRefNo=$a&applicationFormId=$b"
    done
done

예상 출력

http://indiafirstlife.com//onlineInsurance-rest/uploadDocument/uploadDocumentsOmniMannualPush?applicationRefNo=P02183606&applicationFormId=PID
http://indiafirstlife.com//onlineInsurance-rest/uploadDocument/uploadDocumentsOmniMannualPush?applicationRefNo=P02183608&applicationFormId=PID2
http://indiafirstlife.com//onlineInsurance-rest/uploadDocument/uploadDocumentsOmniMannualPush?applicationRefNo=sassa&applicationFormId=sas

답변1

당신이 원하는가능한 모든 조합으로 결합하는 대신 두 개의 목록이 있습니다.

한 가지 방법은 다음과 같습니다.

#!/bin/sh

set -- P02183606 P02183608 sassa

for formid in PID PID2 sas; do
    printf '...urlpath...?applicationRefNo=%s&applicationFormId=%s\n' "$1" "$formid"
    shift
done

그러면 위치 매개변수가 참조 번호 목록으로 설정되고 양식 ID가 반복됩니다. 각 반복에서 URL이 인쇄되고 이러한 매개변수는 를 사용하여 삽입되며 printfshift번째 위치 매개변수는 루프 끝에서 목록에서 제거됩니다.

중괄호 확장은 단지 단순한 목록을 표현하기 위한 것이 아닙니다.

답변2

배열을 사용하십시오:

a=(P02183606 P02183608 sassa)
b=(PID PID2 sas)

for i in "${!a[@]}"; do
    printf 'http://...?applicationRefNo=%s&applicationFormId=%s\n' "${a[$i]}" "${b[$i]}"
done

대안, 단순함 printf:

arr=(P02183606 PID P02183608 PID2 sassa sas)

printf 'http://...?applicationRefNo=%s&applicationFormId=%s\n' "${arr[@]}"

심지어 배열도 아닙니다:

printf 'http://...?applicationRefNo=%s&applicationFormId=%s\n' P02183606 PID P02183608 PID2 sassa sas

관련 정보