シェルスクリプトで時間を比較する方法

シェルスクリプトで時間を比較する方法

現在時刻が正午12時より前か後かを確認する簡単なスクリプトを作成しようとしています。

#!/bin/bash
var1=`date +"%T"` # error "not an integer"
var2='12:00:00'
if [ $var1 -lt $var2 ]; then # always false
    echo "Good morning!"
else
    echo "Good afternoon!"
fi

エラーは、var1が整数でなければならず、条件が常にfalseであることを示します。私は助けが必要です。とても感謝しています。

ベストアンサー1

使用中のテストでは整数のみを比較できます。 date +%T埋め込み文字列が生成されるため、:テストは失敗します。

使用しdate +%Hて設定できますvar2=12

date +%H%M%Sまたはを使って設定できますvar2=120000

つまり、$(date ...)バックティックの代わりに使用することをお勧めします。読みやすく、複数のコマンドを1つにまとめることができます。

おすすめ記事