요일이 월요일, 화요일 또는 수요일이면 일부 스크립트를 실행해야 한다는 요구 사항이 있으며, 그렇지 않으면 아무것도 실행하지 않습니다.
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
=~