bashスクリプトで明日が毎月初日かどうかを確認できませんでした。

bashスクリプトで明日が毎月初日かどうかを確認できませんでした。

毎日実行されるスクリプトがあります。今日が何曜日か、明日が月の最後の日かによって、ファイルは別の場所に移動されます。実際の機能は省略しました。

可変的な:

TOM=$(TZ=UTC-24 date +%d)
SUNDAY=$(date +%w)

ロジックは次のとおりです。

    if [ $TOM -eq 1 ]; then
            move_files monthly
    echo EXEUTING END OF MONTH MOVE AND PURGE, NON-DAILY, NON-END-OF-MONTH

    elif [ $SUNDAY -eq 0 ]; then
            move_files weekly
    echo EXECUTING SUNDAY MOVE AND PURGE, NON-DAILY, NON-END-OF-MONTH

    else echo EXECUTING DAILY MOVE AND PURGE NON-SUNDAY, NON-END-OF-MONTH
            move_files daily
    fi

monthlyすべてがうまく動作していましたが、昨日(11月30日)機能の一部であるディレクトリにファイルを正しく移動できませんでしたmove_files monthly。他の場所でテストしましたが、正常に動作しているようです。

私が実行しているホストはUTCです。

ベストアンサー1

上記の説明の一部をまとめると、GNU日付を使用して明日がその月の1日であることを確認できます。

if [[ "$(date -d tomorrow +%d)" == "01" ]]; then
    echo "Tomorrow is the first day of the month"
fi

明日が月の最後の日かどうかを知りたい場合は、次のようにできます。

if [[ "$(date -d "2 days" +%d)" == "01" ]]; then
    echo "Tomorrow is the last day of the month"
fi

おすすめ記事