Мне удалось показать индикаторы прогресса, пока определенные процессы выполняются до тех пор, пока они не закончатся, но я не смог получить код, чтобы показывать тот же индикатор прогресса, когда я запускаю некоторое время петля. Например, я делаю это, когда я пинг внутри сценария:Bash script: Показывать индикатор прогресса до тех пор, пока цикл цикла не завершится
/bin/ping -c 10 $ipaddress > /pinglog & PID=$!
printf "["
while kill -0 $PID 2> /dev/null; do
printf "."
sleep 1
done
printf "] "
Я могу также показать прогресс с помощью команды сна внутри сценария:
sleep 30 & PID=$!
printf "["
while kill -0 $PID 2> /dev/null; do
printf "."
sleep 1
done
printf "] "
Оба этих примера работы и мой вывод выглядит это:
[.........................}
Точки продолжаются каждую секунду, пока команда не завершится, и это то, что я хочу. Но теперь я пытаюсь получить такой же результат, используя цикл while, и я не могу получить результаты, которые мне нужны. Вот что я до сих пор.
while [[ ! $(/bin/grep -wo -m1 $VAR1 /logfile) ]] & PID=$!
printf "["
while kill -0 $PID 2> /dev/null; do
printf "."
sleep 1
done
printf "] "
do
sleep 5
done
echo $VAR1 was found
Это работает, однако он не останавливается, когда строка найдена, и результат выглядит следующим образом:
[.] [.] [.] [.] [.] and on and on...
Я попытался двигаться фактическое время цикла делать, сон 5 и сделано выше первого printf, но результаты хуже, и я даже не получил выход индикатора прогресса. Как я могу исправить это, чтобы получить тот же индикатор прогресса, что и мои первые 2 примера, и он останавливается, когда мой шаблон найден?
Я проверяю, существует ли шаблон в определенном файле журнала, используя цикл while. Пока я жду появления шаблона, я хочу показать индикатор прогресса, как я представил в своих первых двух примерах, используя другой цикл while. Так что вложенная петля так сказать. Принтер [......] должен остановиться, когда появится шаблон. – user53029
Просто прочитайте, что вы сказали. Однако printf будет/должен завершиться с ошибкой/завершить/независимо ... когда PID для начального цикла while завершается (когда шаблон найден). Но это не так. По крайней мере, не с этим кодом. – user53029
@ user53029: 'printf' не подведет. Почему это должно быть? – rici