Perl 如何显示unix中脚本执行的百分比

Perl 如何显示unix中脚本执行的百分比,perl,unix,execution-time,Perl,Unix,Execution Time,如果我们在Unix中运行一个shell/perl/tcl脚本,我们如何显示同时执行的百分比 例如: ./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

如果我们在Unix中运行一个shell/perl/tcl脚本,我们如何显示同时执行的百分比

例如:

./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

只有两种方法可以做到这一点:

口译员可以在本地支持它;这不是bash、tclsh或perl所做的事情,因此您运气不好。 脚本可以包含语句,通过定期打印所需的信息来执行此操作。
通常只有第二种方法适用。抱歉。

只有两种方法可以做到这一点:

口译员可以在本地支持它;这不是bash、tclsh或perl所做的事情,因此您运气不好。 脚本可以包含语句,通过定期打印所需的信息来执行此操作。
通常只有第二种方法适用。很抱歉。

我们已经用模块实现了类似的进度显示,也许您会检查它。

我们用模块实现了类似的进度显示,也许您会检查它。

由于脚本每次执行的时间可能略有不同,您只需要从脚本执行此操作,因为shell不提供此功能

我建议在每次函数调用或脚本中的任何步骤之后,使用一个每次增加1或0.x的整数设置一些里程碑


这可能很难,但就我而言,这是唯一的方法。

由于脚本每次执行的时间可能略有不同,因此您只需要从脚本执行此操作,因为shell不提供此功能

#!/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或0.x的整数设置一些里程碑

这可能很难,但就我而言,这是唯一的方法。

在Perl中,请看模块

#!/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"
对于经过的时间,只需计算开始和结束时的时间差。

在Perl中,查看模块


对于经过的时间,只需计算开始时间与结束时间的差值。

对于在完成任务后执行循环,这不会有什么好处。ThanksAs for loop是在完成任务执行后执行的,这对我们没有好处。Thanks@user,而不是在评论中感谢raina77ow,您应该通过单击答案左侧0上方的向上箭头来向上投票。@user,而不是在评论中感谢raina77ow,您应该通过单击答案左侧0上方的向上箭头来向上投票。