Ksh

Korn Shell:以特定格式顯示經過的時間

  • May 2, 2020

在日誌文件中,我需要列印經過的時間,格式如下:

"Process completed %s - Elapsed %s",
<time now in HH:MM:SS format>,
<difference from start date to end date in HH:MM:SS format>

例子:

Process completed 23:57:59 - Elapsed 103:22:59

我怎麼能做到這一點?

Ksh 有一個特殊的參數SECONDS,它總是包含自紀元以來的秒數。$SECONDS在作業開始和結束時進行評估會為您提供開始時間和結束時間,不同的是經過的時間。

Unix 時間不考慮閏秒:Unix 時間中的一天總是正好 86400 秒。因此,Unix 時間的時間算術很容易。

start=$SECONDS
…
end=$SECONDS
elapsed=$((end - start))
printf 'Process completed %d:%02d:%02d - Elapsed %d:%02d:%02d\n' \
      $((end / 3600)) $((end / 60 % 60)) $((end % 60)) \
      $((elapsed / 3600)) $((elapsed / 60 % 60)) $((elapsed % 60))

引用自:https://unix.stackexchange.com/questions/114925