2016-03-30 15 views
-1

benim bash komut bu iki fonksiyonlar varSaatin bash'da nasıl doğru ayarlanacağı?

function start_time { 
    unset date1 
    date1=$(date +"%s") 
} 

function stop_time { 
    unset date2 diff minutes seconds hours varhours varminutes varseconds 
    date2=$(date +"%s") 
    diff=$(($date2-$date1)) # <-- There is seconds 
    minutes=$((($diff/60))) 
    seconds=$((($diff % 60))) 
    hours=$((($minutes/60))) 

    if [ $hours != 0 ]; then varhours=$(echo "$hours Hours"); fi 
    if [ $minutes != 0 ]; then varminutes=$(echo "$minutes Minutes"); fi 
    if [ $seconds != 0 ]; then varseconds=$(echo "$seconds Seconds"); fi 

    echo "++ $1 : $varhours $varminutes $varseconds " 
} 

yüzden şu şekilde onları yürütmek; 3 saat 203 dakika ve 50 saniye

:
start_time  
"some bash job for example sleep command for a while" 
stop_time "execution time was" 

komut, örneğin alırsa

, 3 saat 23 dakika 50 saniye, bu şu şekilde

yürütme zaman çıkış gösterir

Yani, benim sorum şu ki, doğru dakikaları göstermenin bir yolu var mı, yani 123 dakika, komutun bir işi yapması için harcadığı toplam süredir, yani beklenen çıktı şu olmalıdır: 3 saat 23 dakika 50 saniye.

+0

görünüyor (Bu yerleşik bazı kabuk demiyorsun emin olmak için command time yerine time ait kullanıyor) Muhtemelen 2 saat 3 dakika olmalıdır. 123 dakikadan beri 2 saatten biraz fazla. –

+0

Görüntülenen saatlere mi ihtiyacınız var, yoksa sadece dakikalar ve saniyeler kullanıyor musunuz? – bluerojo

+0

http://stackoverflow.com/questions/8903239/how-to-calculate-time-difference-in-bash-script <- betikteki zaman farkının nasıl hesaplanacağını gösterir – bluerojo

cevap

1

Neden tekerleği yeniden icat ediyorsunuz? time komut zaten ne istediğinizi yapacak:

command time --format "execution time was :%E" sleep 100 

saatleriniz orada yuvarlanır gibi

+2

'' standartlaştırılmamış, mevcut olmayabilir ve onu bulmak için kabuk oluşturma (nispeten (pahalı.) Kabuk, bu tam amaç için yerleşik bir 'komut' sağlar. –

İlgili konular