曜日が日付セットの場合、If-Elseを使用していくつかのタスクを実行するにはどうすればよいですか?

曜日が日付セットの場合、If-Elseを使用していくつかのタスクを実行するにはどうすればよいですか?

曜日が月曜日、火曜日、または水曜日の場合は、いくつかのスクリプトを実行する必要があります。そうしないと何も実行しません。

if [[ $(date '+%a') == "Mon" && $(date '+%a') == "Tue" && $(date '+%a') == "Wed" ]]
then
echo "PERFORM TASK"
else
echo "DONT DO ANYTHING"
 fi

私は何もしません。

これは間違っています。今日の日付は「月曜日」なので、「タスクの実行」が出ると予想されますif [[ $(date '+%a') == "Mon" ]]。 ...私は何が間違っていましたか?助けてください。

答え1

case "$(date +%a)" in
   Sun)
     handle_sunday_stuff
     break
     ;;
   Tue|Thu)
     handle_tuesday_thursday_stuff
     break
     ;;
   Wed)
     handle_wednesday_stuff
     break
     ;;
   *)
     echo "Nothing to do today"
     ;;
esac

答え2

あなたは尋ねています

if today is Monday AND today is Tuesday AND ...

これは明らかに真実ではありません。&&AND条件付き演算子です。おそらく必要なのは||OR条件付き演算子です。

today=$(date +'%a')
if [[ $today == "Mon" || $today == "Tue" || $today == "Wed" ]]
then
    echo "PERFORM TASK"
else
    echo "DON'T DO ANYTHING"
fi

効率のために、コマンドが一度だけ実行されるようにdate条件外に移動しました。if...(これはまた、日曜日/月曜日または水曜日/木曜日真夜中の潜在的な競争状況を防ぎます。)

答え3

&&あなたの条件で代わりに使用しているということは、曜日を印刷する必要がある||ことを意味します。PERFORM TASKみんなその時代。

代わりに:

day="$( date +"%a" )"

if [[ "$day" =~ ^(Mon|Tue|Wed)$ ]]; then
    echo "PERFORM TASK"
else
    echo "DON'T DO ANYTHING"
fi

(このソリューションは、このように正規表現を実行する別のシェルをbash想定しています)ksh93=~

関連情報