コマンドを入力すると、システムはこの10:42のような時間を表示しました
date +%R
。時間の合計をとる必要があります。つまり、この642分です。合計時間を分単位で表示するコマンドまたはシェルスクリプトはありますか?
コマンドを入力すると、システムはこの10:42のような時間を表示しました
date +%R
。時間の合計をとる必要があります。つまり、この642分です。合計時間を分単位で表示するコマンドまたはシェルスクリプトはありますか?
回答:
その日の合計分のみを取得するには、次のコマンドを使用します。
$ date "+%H*60+%M" | bc
例:
$ date +%R
09:30
$ date "+%H*60+%M" | bc
570
コツは、式を解釈して計算date
できるようbc
に出力をフォーマットすることです。
zsh
date "+%H*60+%M" | bc
同様に動作します。おそらくどんなシェルでも。
ただバッシュ:
IFS=: read hour min < <(date +%R)
echo $(( 60 * 10#$hour + 10#$min ))
両方の変数を10進数として扱うように強制し、無効な8進数08
および09
echo $(( $(date "+%k * 60 + 10#%M") ))
私が言いたかったことです
date
およびの使用bash
:
eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"
例
$ date
Fr 10. Jul 08:45:05 CEST 2015
$ eval "$(date +'today=%F now=%s')"; midnight=$(date -d "$today 0" +%s);echo "$(((now - midnight) / 60))"
525
使用date
およびZシェル(zshのを):
IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"
例
% date
Fr 10. Jul 08:40:53 CEST 2015
% IFS=:; set -- $(date +%T); echo "$((($1 * 3600 + $2 * 60 + $3) / 60))"
520
IFS=: set -- $(date +%T); echo $1
戻り値08:16:52
-必要になりますIFS=:; set ...
echo $(date +"%H*60+%M") | bc
、zshでも動作します;)