Você pode fazer iterações em dois arrays, um com seus URLs para download e outro com os nomes de arquivos desejados, iniciando subprocessos que serão executados em paralelo para o download dos arquivos.
#!/bin/sh
# array of URLs
urls=( http://www.example.com/file1.zip http://www.example.com/file2.zip http://www.example.com/file3.zip )
# names of downloaded files
names=( myname1.zip myname2.zip myname3.zip )
for ((i = 0; i < ${#urls[@]}; ++i)); do
printf "Launching subprocess to DL %s to %s\n" "${urls[i]}" "${names[i]}"
curl -s -o "${names[i]}" "${urls[i]}" &
done
Ou tente algo assim se quiser que seja semelhante ao uso de {} w / curl:
#!/bin/sh
# desired filenames
names=( myname0.zip myname1.zip myname2.zip )
for (( i = 0; i < ${#names[@]}; ++i )); do
printf "Launching subprocess to DL http://example.com/file%s.zip to %s\n" "$i" "${names[i]}"
curl -s -o "${names[i]}" http://example.com/file"$i".zip &
done