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