Как показать процент выполнения скрипта в unix - PullRequest
1 голос
/ 25 февраля 2012

Если мы запустим сценарий shell / perl / tcl в Unix, как мы можем отобразить процент выполнения за среднее время?

Пример:

./scriptname
1% Completed the execution of script.pl
2% Completed the execution of script.pl
...
100% Completed the the execution of script.pl

и отобразить время выполненияберется за скрипт в конце.

Пример вывода:

Execution time for script.pl is :50 Seconds

Ответы [ 5 ]

4 голосов
/ 25 февраля 2012

В Perl посмотрите на модуль Smart :: Comments .

А за прошедшее время просто возьмите дельту time() в начале против конца.

1 голос
/ 25 февраля 2012
#!/bin/bash

before=`date +%s`

# do task
for i in {1..10}; do
    # do steps
    sleep 1
    # show progress
    echo -ne "${i}0% Completed\r"
done

after=`date +%s`

duration=$((after-before))
echo "Execution time is: $duration Seconds"
1 голос
/ 25 февраля 2012

Мы реализовали аналогичное отображение прогресса с модулем Time :: Progress , возможно, вы его проверите.

0 голосов
/ 25 февраля 2012

, поскольку время выполнения скрипта может отличаться каждый раз (незначительно), вам нужно делать это только из скрипта, поскольку оболочка не предлагает эту функцию.

я бы порекомендовал установить некоторые«вехи» после каждого вызова функции или любого шага в вашем скрипте с целым числом, которое увеличивается каждый раз на 1 или 0.x

, этот может быть сложным, но это единственный способ, насколько яобеспокоен.

0 голосов
/ 25 февраля 2012

Есть только два способа сделать это:

  1. Переводчик может поддерживать его изначально; это не то, что bash, tclsh или perl делают, так что вам не повезло.
  2. Сценарий может содержать инструкции для этого, периодически печатая необходимую информацию.

Только второй обычно применим. К сожалению.

...