jra*_*775 3 linux math bash time
我有一个Bash脚本,它通过它的API从网站下载文件,我想在最后实现一个东西(缺少更好的单词),这将显示脚本完成所需的时间.使用此代码,我能够做到:
#!/bin/bash
SECONDS=0
# -- Code to Execute --
echo "Task complete"
echo "Script completed in $(echo "scale=2; $SECONDS / 60" | bc) minutes"
Run Code Online (Sandbox Code Playgroud)
但是,这将显示脚本在一分钟内执行的时间:
Task complete
Script completed in 1.35 minutes
Run Code Online (Sandbox Code Playgroud)
我怎样才能将脚本完成的秒数转换为分钟和秒?像这样:
Task complete
Script completed in 1 minute and 12 seconds
Run Code Online (Sandbox Code Playgroud)
您可以在shell中使用整数除法和模运算符:
echo "Script completed in $((SECONDS/60)) minutes and $((SECONDS%60)) seconds"
Run Code Online (Sandbox Code Playgroud)
如果你想省略秒和分钟零件,如果它们为零,那就有点复杂了:
if (( SECONDS/60 == 0 )); then
echo "Script completed in $SECONDS seconds"
elif (( SECONDS%60 == 0 )); then
echo "Script completed in $((SECONDS/60)) minutes"
else
echo "Script completed in $((SECONDS/60)) minutes and $((SECONDS%60)) seconds"
fi
Run Code Online (Sandbox Code Playgroud)
(它仍会说"1分钟"而不是"1分钟";如果你想让它变得更复杂,你也可以解决这个问题......)