bashを使って時間を取りますか?

bashを使って時間を取りますか?

Bashを使用して24時間を含む変数を減算することは可能ですか?

#!/bin/bash
var1="23:30" # 11:30pm
var2="20:00" # 08:00pm

echo "$(expr $var1 - $var2)"

実行すると、次のエラーが発生します。

./test 
expr: non-integer argument

出力を10進形式で表示する必要があります。たとえば、次のようになります。

./test 
3.5

ベストアンサー1

このdateコマンドの入力は非常に柔軟です。以下の利点を活用できます。

#!/bin/bash
var1="23:30"
var2="20:00"

# Convert to epoch time and calculate difference.
difference=$(( $(date -d "$var1" "+%s") - $(date -d "$var2" "+%s") ))

# Divide the difference by 3600 to calculate hours.
echo "scale=2 ; $difference/3600" | bc

出力:

$ ./test.bash
3.50

おすすめ記事