如何使用时间命令但仅限时间部分脚本

时间:2016-04-22 06:12:13

标签: shell unix time solaris ksh

仅用于我在Unix Solaris系统中运行ksh的记录。 我有一个看起来像这样的脚本:

awk '{ do stuff here }'

for n in x {
    echo $something | awk '{ do more stuff here }'
}

我知道我在运行脚本时可以在控制台中使用time,例如,如果文件的名称是file_name,我会像这样运行它:time ksh file_name,但是像这样我得到了整个脚本的运行时间,我只需要for的运行时间,以便与另一个脚本进行比较。是否有可能我可以调用脚本中的time,所以我想在for之前添加它,以便它只计算那部分?另外我想知道是否可以为一个脚本提供两个time,因此您将获得脚本的两个不同部分的运行时间。

1 个答案:

答案 0 :(得分:2)

由于Bash脚本中的所有变量都是全局变量,因此您可以将for存储在函数中,并在time之前调用它:

my_for_function () {
    for n in x {
        echo $something | awk '{ do more stuff here }'
    }
}

awk '{ do stuff here }'

time my_for_function   # here you call `time`

然后你正常运行脚本。

小例子

$ cat silly_script.sh

myfunc() {
    for x in "${a[@]}"
        do
             echo "$x --"
             sleep 1
        done

}

awk 'BEGIN {print "i am here"}'
a=(1 2 3 4)

time myfunc

echo "i am done"

让我们运行它:

$ bash silly_script.sh
i am here
1 --
2 --
3 --
4 --

real    0m4.008s
user    0m0.004s
sys 0m0.000s
i am done