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