Типичная мощность записывается в ЧК файл из команды:Баш - получение номера из потока
wget -O - http://website/file > /dev/null 2>chk &
что-то вроде:
0K .......... .......... .......... .......... .......... 0% 143K 62s
50K .......... .......... .......... .......... .......... 1% 433K 41s
100K .......... .......... .......... .......... .......... 1% 1.20M 30s
150K .......... .......... .......... .......... .......... 2% 259K 31s
200K .......... .......... .......... .......... .......... 2% 83.2M 24s
...
8800K .......... .......... .......... .......... .......... 98% 260K 1s
8850K .......... .......... .......... .......... .......... 98% 329K 0s
8900K .......... .......... .......... .......... .......... 99% 433K 0s
8950K .......... .......... .......... .......... ......... 100% 331K=31s
2017-01-13 13:16:59 (288 KB/s) - written to stdout [9215609/9215609]
Файл обновляется, строка за строкой , в течение всего процесса загрузки. Ну, мне нужно получить только процент: 0, 1, 2 ... 99 и ничего больше.
Следующий сценарий делает работу, даже если не идеально:
tail -n 5 chk | tail -n 1 | colrm 1 63 | cut -d '%' -f 1
Проблема возникает тогда, когда мне нужно сделать то же самое в Баш скрипт, как в следующем примере:
#!/bin/bash
# Test script for getting the percentage number from 'wget' output
i=0
wget -O - http://website/file > /dev/null 2>chk &
sleep 1
while (($i < 90))
do
i=`tail -n 5 chk | tail -n 1 | colrm 1 63 | cut -d '%' -f 1`
echo $i
done
Сценарий начинает получать желаемый файл, он записывает файл chk, но останавливается с сообщением об ошибке:
line 9: ((: < 90 : syntax error: operand expected (error token is "< 90 ")
Я попытался использовать [[]], цитаты ... но не работает.
Любая идея здесь для лучшей работы?
Спасибо. Дело в том, что число, которое я искал, должно обрабатываться скриптом диалога whiptail -gauge, и ему нужно число, чтобы сделать индикатор выполнения. – MAXIM
Я обновил свой ответ. Теперь на выходе отображается только номер без конечного%. – Cyrus
Отлично! большое спасибо за ваш ответ! Можете ли вы объяснить шаг за шагом, как работает скрипт? Чтобы его можно было реализовать в whiptail --gauge – MAXIM