답변:
0 8 * * 6 test $((10#$(date +\%W)\%2)) -eq 1 && yourCommand
date +%W
: 월요일을 주중 첫 번째 요일, 오늘 주 39로 표시하는 주 수
10#$(date +%W)
: date +W
십진수로 수렴하고 쉘 기본 구문 분석 혼동을 피하십시오.
$((39%2))
: 모듈로 연산 : 결과는 0 (짝수 주) 또는 1 (홀수 주 수)이며 이번 주 결과는 1, 다음 주 0
test 1 -eq 1
: 산술 테스트 (같음),이 경우 결과는 부울 true입니다.
&& yourCommand
: 부울 AND : yourCommand
이전 명령의 결과가 부울 true 인 경우에만 실행
연도는 53 (올해)과 1 (내년)의 2 주일입니다.
0 8 * * 6 test $(($(date +\%W)\%2)) -eq 1 && yourCommand
$((10#$(date +%W)%2)) -eq 1 && echo OK
쉘을 실행하려고하면 주 계산 결과를 실행하려고합니다 -bash: 1: command not found
. 왜 그렇게하고 있는지 실마리가 있습니까? 감사.
test
사용자가 아닙니다. 명령입니다. 시도 :test $((10#$(date +\%W)%2)) -eq 1 && echo odd || echo even
당신이 보여준 것은 "매주"입니다. 그런 다음 코드는 다음과 같습니다.
0 8 * * 6
2 주마다 실행해야합니까?
0 8 * * 6 expr `date +\%s` / 604800 \% 2 >/dev/null || yourCommand
echo $?
해당 명령을 실행 한 후 실행하면 리턴 코드를 확인할 수 있습니다. 이것이 중요한 이유