在 Bash 中可以使用 date
命令记录时间,或者使用内置的 SECONDS
变量来计算脚本或命令执行前后的时间。
以下是两种常用方法:
方法 1:使用 date
命令
date +%s
返回当前时间的时间戳(以秒为单位)。
示例代码:
#!/bin/bash
start_time=$(date +%s) # 记录开始时间
# 模拟一个需要耗时的任务
sleep 3
end_time=$(date +%s) # 记录结束时间
# 计算时间差
elapsed=$((end_time - start_time))
echo "Execution time: ${elapsed} seconds"
输出:
Execution time: 3 seconds
方法 2:使用内置的 SECONDS
变量
SECONDS
是一个 Bash 内置变量,从脚本启动时开始计时,单位是秒。
示例代码:
ecution time: 3.003 seconds
#!/bin/bash
SECONDS=0 # 重置计时器
# 模拟一个需要耗时的任务
sleep 3
# 输出运行时间
echo "Execution time: ${SECONDS} seconds"
输出:
Execution time: 3 seconds
方法 3:显示更精确的时间(包含毫秒)
使用 date +%s.%N
获取时间戳,%N
表示纳秒。
示例代码:
#!/bin/bash
start_time=$(date +%s.%N) # 记录开始时间
# 模拟一个需要耗时的任务
sleep 3
end_time=$(date +%s.%N) # 记录结束时间
# 计算时间差(精确到毫秒)
elapsed=$(echo "$end_time - $start_time" | bc)
echo "Execution time: ${elapsed} seconds"
输出:
Execution time: 3.003 seconds
方法 4:使用 time
命令
如果只想测量某个命令的执行时间,可以使用 time
命令。
示例代码:
time sleep 3
输出:
real 0m3.003s
user 0m0.000s
sys 0m0.002s
real
: 命令的总执行时间user
: CPU 在用户模式下执行的时间sys
: CPU 在内核模式下执行的时间
总结:
- 简单任务:使用
SECONDS
是最方便的。 - 需要高精度:使用
date +%s.%N
和bc
。 - 单个命令:使用
time
命令。