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이 인쇄되고 이러한 매개변수는 를 사용하여 삽입되며 printf
첫 shift
번째 위치 매개변수는 루프 끝에서 목록에서 제거됩니다.
중괄호 확장은 단지 단순한 목록을 표현하기 위한 것이 아닙니다.
답변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