자정으로 기간을 정의해야 합니다. 스크립트가 트리거되면 시간이 오후 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