Lösung 1:
0 8 * * 6 test $((10#$(date +\%W)\%2)) -eq 1 && yourCommand
date +%W :Wochennummer des Jahres mit Montag als erstem Wochentag, heute Woche 39
10#$(date +%W) :Konvertiere die date +W in eine Dezimalzahl umzuwandeln und Verwirrung beim Parsing der Shell-Basis zu vermeiden
$((39%2)) :Modulo-Operation:Ergebnis ist 0 (gerade Wochennummer) oder 1 (ungerade Wochennummer), Ergebnis dieser Woche ist 1, nächste Woche 0
test 1 -eq 1 :arithmetischer Test (gleich), in diesem Fall ist das Ergebnis boolesch wahr
&& yourCommand :Boolesches UND:Führen Sie yourCommand aus nur wenn das Ergebnis des vorherigen Befehls boolesch wahr war
Beachten Sie, dass das Jahr zwei ungerade Wochen haben kann:53 (dieses Jahr) und 1 (nächstes Jahr)
Lösung 2:
Was Sie gezeigt haben, ist "jede Woche". Dann lautet der Code:
0 8 * * 6
Sind Sie sicher, dass Sie es alle zwei Wochen ausführen müssen?
0 8 * * 6 expr `date +\%s` / 604800 \% 2 >/dev/null || yourCommand