Недавно обнаружил, что в баше можно очень удобно получать вывод команды во время ее выполнения и производить с ним некие действия.
Например для wget работает следующая конструкция
wget ТУТ_ССЫЛКА 2>&1 | while read line
do
#тут в переменной $line имеем вывод wget, можем его изменить и вывести, переход в этот блок происходит при каждом обновлении статуса wget
echo "$line"
done
Почему аналогичная конструкция не срабатывает для curl? Переход в блок цикла не происходит при обновлении прогресс-бара
Насчет $line/$link описался, исправил первый пост.
вы в файл /tmp/file сохраняете информацию, которую хотите обрабатывать.
Опция -o как раз говорит записывать скачиваемую информацию в файл, как известно curl по умолчанию все на консоль выводит. А считывать мне нужно не скачиваемое содержимое, а прогресс. Т.е вот это:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
73 14.3M 73 10.5M 0 0 117k 0 0:02:04 0:01:32 0:00:32 115k
Опция -s вовсе отключает прогресс-бар, так что man curl невтему
/dev/random
Спасибо, действительно curl заканчивает строку символом '\r'. Правда с помощью tr как вы предложили решить проблему не удалось, т.к видимо tr буферизирует у себя весь входной поток и дальше по каналу до своего завершения не отдает.
Но после чтения man bash было обнаружено что у read есть опция -d delim.
Итого для curl срабатывает следующая конструкция: