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