在我的bash
脚本中,我想打印执行一组命令所花费的时间。
我正在这样做:
#!/bin/bash
start=$(date +%s)
./my-long-command.sh
./another-longcommand.sh
echo "Completed, in $(echo "$(date +%s) - ${start}" | bc)s"
例如,它会打印:
Completed, in 450s
我希望它打印毫秒、秒、分钟或小时——具体取决于值。另外,我不想bc
在每个需要打印这种时间差的脚本中都写一个复杂的表达式。您是否知道tdiff
Linux 中任何命令可以实现此功能:
echo "Completed, in $(tdiff ${start})"
请不要建议我为此创建自己的脚本。
答案1
有内置变量为了这:
#!/bin/bash
./my-long-command.sh
./another-longcommand.sh
echo "Completed, in ${SECONDS}s"
请不要建议我为此创建自己的脚本。
为什么不呢?其实没那么复杂:
tdiff() {
if (($1 < 60)); then
printf '%ds' "$1"
elif (($1 < 60*60)); then
printf '%dm' $(($1 / 60))
tdiff $(($1 % 60))
else
printf '%dh' $(($1 / (60*60)))
tdiff $(($1 % (60*60)))
fi
}