Bash 스크립트의 타임슬롯 정의 [닫기]

Bash 스크립트의 타임슬롯 정의 [닫기]

자정으로 기간을 정의해야 합니다. 스크립트가 트리거되면 시간이 오후 5시에서 오전 8시 사이인지 테스트해야 합니다. 명령은 true인 경우에만 실행되어야 합니다. 나는 다음을 시도했고 효과가 있었지만 자정이 지나지 않았습니다. 어떻게 구현하는지 아시나요?

#!bin/bash
hr=`date +%H%M`  
if test $hr -ge 1700 -a $hr -lt 0800  
then        
echo "success"

fi

답변1

오후 5시부터 오전 7시 59분까지 운영(오전 8시 제외):

case $(date +%H) in
  (17|18|19|20|21|22|23|00|01|02|03|04|05|06|07) echo run;;
  (*) echo do not run;;
esac

...오전 8시 시간 범위를 모두 포함하려면 첫 번째 목록에 8을 포함하세요. date명령에 분을 포함할 필요가 없습니다 .

답변2

나는 당신이 무엇을 원하는지 완전히 확신하지 못하지만 내가 본 한 가지 문제는 숫자가 1700보다 크고 0800보다 작을 수 없으므로 if 문이 항상 false를 반환한다는 것입니다. or대신 연산자를 사용해야 합니다 and.

내가 생각해낸 내용은 다음과 같습니다.

#!/bin/bash
hr=$(date +%H%M)
if [[ $hr -ge "1700" || $hr -lt "0800" ]]; then
echo "success"
fi

관련 정보