毎月最初の木曜日に実行されない Bash 条件

毎月最初の木曜日に実行されない Bash 条件

週に2回(月曜日/木曜日)スクリプトを実行するクローンがあります。この方法はうまく機能しますが、毎月最初の木曜日に処理を停止する必要があります。

このコードを調整したいです。

we=$(LC_TIME=C date +%A)
dm=$(date +%d)
if [ "$we" = "Thursday" ] && [ "$dm" -lt 8 ]
then 
    .....
fi

=を!=に変更すると仮定していますが、知っておくべき問題があるかどうか疑問に思います。

問題(上記のコードをどこで取得したか)は次のとおりです。私が望むものとは反対- 実際にこの質問に対する回答にコメントを追加したいのですが、50人の担当者が必要です。

答え1

Bashを使ってテストします。

if [[ "$(LC_TIME=C date +%A)" == 'Thursday' && "$(date +%d)" -le 7 ]]; then
    exit 1
fi

注:機能的に、これはあなたの質問のテストと変わりません。

スクリプトの上部に追加するだけです。毎月最初の木曜日の場合、スクリプトはすぐに終了し、それ以外の場合は実行されます。

あるいは、crontabエントリに直接入れることもできます。たとえば、次のようになります。

0 1 * * 1,4 [[ "$(LC_TIME=C date +\%A)" == 'Thursday' && "$(date +\%d)" -le 7 ]] || /path/to/script.sh

関連情報