bashを使用して特定の時間までの残り時間(秒)を計算しますか?

bashを使用して特定の時間までの残り時間(秒)を計算しますか?

"date"コマンドから時間を抽出しようとしていますが、減算将来のある時点で、Dateがその時間に達するまでの残りの秒数を求め、その数を分は60、時間は60で割ります。

たとえば、「shutdown」コマンドの引数として使用したいとします。

どうすればいいですか?

答え1

このような?

echo $(( $(date +%s -d "tomorrow 12:00") - $( date +%s ) ))
59856

答え2

Bashから直接時間文字列(24時間未満)に変換できます。

 $ TZ=UTC0 printf '%(%H:%M:%S)T\n' 123
 00:02:03

視差は単純な数学で計算できます。

 $ now=$(printf '%(%s)T')
 $ future=$(date -d '+10 hours' '+%s')
 $ tdiff=$(( future - now ))
 $ TZ=UTC0 printf '%(%H:%M:%S)T\n' "$tdiff"
 10:00:00

最大364日を取得するには、次のコマンドを使用します。

 now=$(printf '%(%s)T')
 future=$(date -d '+10 hour' '+%s')
 tdiff=$(( future - now ))
 j=$(( $(TZ=UTC0 printf '%(%j)T' "$tdiff") - 1 ))
 TZ=UTC0 printf '%s days %(%H:%M:%S)T\n' "$j" "$tdiff"

 0 days 10:00:00

関連情報