Нужно с нескольких сайтов взять некий контент и объединить все в один файл. Причем порядок должен быть соответствующим. Т. е. каждому сайту, например, соответствует номер 1, 2, 3...1000, в результирующем файле сначала должна быть инфа с 1-го сайта, потом со 2-го и т. д. (сначала записать с n-го сайта, потом с (n-k)-го недопустимо), ответы могут приходить в любом порядке, поэтому просто перенаправление в файл (>>) не подойдет.
Я написал такой скрипт:
rm -rf /tmp/content
mkdir /tmp/content
for i in ${!urls[@]}; do
mkfifo /tmp/content/$i
curl -s "${urls[$i]}" > /tmp/content/$i &
done
rm -f /tmp/output
for i in ${!urls[@]}; do
cat /tmp/content/$i >> /tmp/output
done
rm -rf /tmp/livesport
Bash делает, что-то невероятное - вместо N параллельных запросов, каждый из которых выполнится за 1-2 сек (а значит вся закачка+сборка займет пару секунд), он делает запросы последовательно (пока один curl не закончит работу, следующий не начинает).