1. ホーム
  2. バッシュ

[解決済み】bashスクリプトで経過時間を計算する方法は?

2022-04-01 19:18:40

質問

開始時刻と終了時刻を表示するには date +"%T" というような結果になります。

10:33:56
10:36:10

この差分を計算して印刷するにはどうしたらいいでしょうか?

のようなものを得たいのですが。

2m 14s

解決方法は?

Bashには便利な SECONDS は、シェルが起動してから経過した秒数を記録する内蔵変数です。この変数は、代入されてもそのプロパティを保持し、代入後に返される値は、代入後の秒数に代入値を加えたものになります。

したがって、単に SECONDS を 0 に設定してからタイムドイベントを開始すると、単純に SECONDS を表示する前に、時間計算を行う。

#!/usr/bin/env bash

SECONDS=0
# do some work
duration=$SECONDS
echo "$(($duration / 60)) minutes and $(($duration % 60)) seconds elapsed."

この解決策は date +%s (これは GNU 拡張です)、Bash がサポートするすべてのシステムに移植可能です。