जवाबों:
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
: अंकगणित परीक्षण (बराबर), इस मामले में परिणाम बूलियन सच है
&& yourCommand
: बूलियन और: yourCommand
केवल तभी चलाएं जब पिछली कमांड का परिणाम बूलियन सच था
ध्यान दें कि वर्ष दो विषम सप्ताह प्राप्त कर सकता है: 53 (इस वर्ष) और 1 (अगले वर्ष)
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
क्या आप वाकई इसे हर दो सप्ताह में चलाने की आवश्यकता है?
0 8 * * 6 expr `date +\%s` / 604800 \% 2 >/dev/null || yourCommand
echo $?
उस कमांड को चलाने के बाद, उसके रिटर्न कोड को देखने के लिए दौड़ें - यही इसके साथ महत्वपूर्ण है