仅用于我在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
,因此您将获得脚本的两个不同部分的运行时间。
答案 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