pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


秒数を 時:分:秒 のフォーマットに変換するbashスクリプト

とある処理プログラムの所要時間が秒単位で出力されるように実装されていて、しかしその処理時間は数十分に及ぶこともあるため、実際の処理時間が直感的に分かりづらいという状況がありました。そこで秒数を入力したら時:分:秒 のフォーマットで出力するスクリプトを用意することにしました。

といっても、ゼロから書くのは面倒なので、こちらのスクリプトを参考にしつつ、echo で出力している箇所を printf に置き換えてみました。もとのスクリプトは時、分、秒の数値をそのまま出力していますので、0:1:3 のように一桁の数値が交じると見づらかったのですが、printf で %02d にフォーマットすることで見やすくなりました。

qiita.com

#!/bin/bash
#
# original from https://qiita.com/hryshtk/items/fc46b2e2d8c13016e0d4
#

if [ $# -eq 2 ]; then
    start_time=$1
    end_time=$2
elif [ $# -eq 1 ]; then
    start_time=0
    end_time=$1
fi

diff=$((end_time - start_time))
let day="$diff / 86400"
let diff="$diff % 86400"
let hour="$diff / 3600"
let diff="$diff % 3600"
let minute="$diff / 60"
let second="$diff % 60"
printf "%dday %02d:%02d:%02d\n" ${day} ${hour} ${minute} ${second}