在 Bash 脚本中,你可以使用 time
命令来测量一个命令或一组命令的执行时间。time
命令会返回三个主要的时间值:实际时间(real)、用户CPU时间(user)和系统CPU时间(sys)。
使用方式:
简单用法:
在命令行中直接前缀 time
命令,后面跟上你想要测量的命令。例如:
time ls
这会显示 ls
命令的执行时间。
在脚本中使用:
在 Bash 脚本中,你可以将 time
命令与花括号 {}
结合使用来测量一组命令的执行时间。例如:
{
sleep 2
echo "Hello, World!"
}
time
注意,这种方法不会直接显示时间输出到脚本的标准输出中,而是会显示在终端上。如果你需要在脚本中捕获 time
命令的输出,可以使用以下方法:
捕获 time
命令的输出:
使用 $(...)
命令替换和 echo
命令可以捕获 time
命令的输出。但是,由于 time
是一个内置命令,不是外部程序,所以直接捕获其输出并不简单。一种方法是使用 bash -c
:
TIMEFORMAT=%R\ %U\ %S\n # 设置时间格式为:实际时间 用户时间 系统时间(换行)
start_time=$(date +%s%N) # 获取开始时间(纳秒)
{
sleep 2
echo "Hello, World!"
} | bash -c 'time for i in "$@"; do "$i"; done' bash _
end_time=$(date +%s%N) # 获取结束时间(纳秒)
elapsed_time=$(( (end_time - start_time) / 1000000 )) # 计算经过的时间(毫秒)
echo "Elapsed time: $elapsed_time ms"
上面的脚本尝试了一种复杂的方法来捕获 time
的输出,但实际上,这种方法并不推荐,因为它依赖于对 bash -c
的特殊用法,并且可能不够准确或可靠。一个更简单且准确的方法是使用 SECONDS
内置变量(注意:单位为秒,不是毫秒):
SECONDS=0 # 重置SECONDS变量
{
sleep 2
echo "Hello, World!"
}
elapsed_seconds=$SECONDS
echo "Elapsed time: $elapsed_seconds seconds"
© 版权声明
文中内容均来源于公开资料,受限于信息的时效性和复杂性,可能存在误差或遗漏。我们已尽力确保内容的准确性,但对于因信息变更或错误导致的任何后果,本站不承担任何责任。如需引用本文内容,请注明出处并尊重原作者的版权。
THE END
暂无评论内容