2017-02-10 162 views
3

我有一個Bash腳本,通過它的API從網站下載文件,並且我想在最後實現一個東西(缺少更好的單詞),以顯示完成腳本需要多長時間。有了這個代碼,我能做到這一點:如何將秒數轉換成Bash中的分鐘和秒鐘?

#!/bin/bash 
SECONDS=0 

# -- Code to Execute -- 

echo "Task complete" 
echo "Script completed in $(echo "scale=2; $SECONDS/60" | bc) minutes" 

然而,這將顯示腳本參加了一分鐘的分數來執行時間:

Task complete 
Script completed in 1.35 minutes 

我將如何能夠翻譯腳本在幾分鐘和幾秒內完成的秒數?就像這樣:

Task complete 
Script completed in 1 minute and 12 seconds 
+0

我希望它只顯示腳本在分鐘和秒內完成所花費的時間量的數值,就像codeforester的答案已經完成。 (例如,將72秒翻譯爲1分12秒) – jramos775

回答

3

Bash是擅長簡單的整數運算:

total_time=100 
minutes=$((total_time/60)) 
seconds=$((total_time % 60)) 
echo "Script completed in $minutes minutes and $seconds seconds" 
# output -> Script completed in 1 minutes and 40 seconds 
5

您可以使用在外殼整數除法和模運算符:

echo "Script completed in $((SECONDS/60)) minutes and $((SECONDS%60)) seconds" 

如果你想離開如果它們爲零,那麼秒鐘和分鐘部分就出來了,這有點複雜了:

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 

(它仍然會說「1分鐘」而不是「1分鐘」;如果你想讓它變得更加複雜,你也可以解決這個問題......)

+0

您的答案可能會奏效,但由於它的使用範圍有點遠,我繼續接受codeforester的答案。儘管謝謝你的回答! – jramos775