Bashから経過時間を取得する

Bashから経過時間を取得する

私のスクリプトのある時点で、次のことをしたいと思います。

start_time=date

1つ以上のプロセスが実行された後:

end_time=date

次に、次のようにします。

elapsed=$end_time-$start_time
echo "Total of $elapsed seconds elapsed for process"

どうすればいいですか?

ベストアンサー1

エポック後の時間を使用してスクリプト内の期間を簡単に識別する

man date
%s     seconds since 1970-01-01 00:00:00 UTC
%N     nanoseconds (000000000..999999999)

start_time="$(date -u +%s)"
sleep 5
end_time="$(date -u +%s)"

elapsed="$(($end_time-$start_time))"
echo "Total of $elapsed seconds elapsed for process"

 Total of 5 seconds elapsed for process

Bashは浮動小数点数をサポートしていないため、時間を比較するにはbcなどの外部ツールを使用する必要があります。1475705058.042270582-1475705053.040524971

start_time="$(date -u +%s.%N)"
sleep 5
end_time="$(date -u +%s.%N)"

elapsed="$(bc <<<"$end_time-$start_time")"
echo "Total of $elapsed seconds elapsed for process"

 Total of 5.001884264 seconds elapsed for process

おすすめ記事