统计 shell 脚本运行时间,支持 MacOS 与 Linux 系统。
starttime=$(date +'%Y-%m-%d %H:%M:%S')
sleep 5
endtime=$(date +'%Y-%m-%d %H:%M:%S')
if [[ $(uname -a) =~ "Darwin" ]]; then
start_seconds=$(date -j -f "%Y-%m-%d %H:%M:%S" "$starttime" +%s)
end_seconds=$(date -j -f "%Y-%m-%d %H:%M:%S" "$endtime" +%s)
else
start_seconds=$(date -d "$starttime" +%s)
end_seconds=$(date -d "$endtime" +%s)
fi
echo 开始时间:"$starttime"
echo 结束时间:"$endtime"
echo "本次运行时间:$((end_seconds - start_seconds)) s"
#!/bin/bash
# -*- coding: utf-8 -*-
# @Time : 2021/8/7 13:10
# @Description : 计算脚本运行时间
# 获取脚本开始时间
start_time=$(date +'%Y-%m-%d %H:%M:%S')
# 模拟脚本运行
sleep 5
# 获取脚本结束时间
end_time=$(date +'%Y-%m-%d %H:%M:%S')
# 判断操作系统类型,选择不同的时间转换命令
if [[ $(uname -a) =~ "Darwin" ]]; then
# macOS系统使用date命令的-j选项进行时间转换
start_seconds=$(date -j -f "%Y-%m-%d %H:%M:%S" "$start_time" +%s)
end_seconds=$(date -j -f "%Y-%m-%d %H:%M:%S" "$end_time" +%s)
else
# Linux系统使用date命令的-d选项进行时间转换
start_seconds=$(date -d "$start_time" +%s)
end_seconds=$(date -d "$end_time" +%s)
fi
# 输出脚本开始和结束时间,以及运行时间
echo "开始时间:$start_time"
echo "结束时间:$end_time"
echo "本次运行时间:$((end_seconds - start_seconds)) s"
注释如下:
- 第1行:指定脚本解释器为bash。
- 第2-4行:添加脚本的元信息,包括脚本名称、作者、版本等信息。
- 第7行:获取脚本开始时间,并使用date命令的格式化选项将时间格式化为"YYYY-MM-DD HH:MM:SS"的形式。
- 第10行:使用sleep命令模拟脚本的运行,这里设置为5秒。
- 第13行:获取脚本结束时间,并使用date命令的格式化选项将时间格式化为"YYYY-MM-DD HH:MM:SS"的形式。
- 第16-24行:判断操作系统类型,选择不同的时间转换命令。macOS系统使用date命令的-j选项进行时间转换,Linux系统使用date命令的-d选项进行时间转换。
- 第27-29行:输出脚本开始和结束时间,以及本次运行时间。其中,运行时间通过结束时间和开始时间的时间戳相减得出。