Execução de um cron job no primeiro dia da semana do mês

1

Estou tentando realizar um trabalho no primeiro dia da semana de cada mês com as seguintes entradas crontab:

00 07 1-3 * * [ "$(date '+\%a')" == "Mon" ] && echo "Its Monday!"
00 07 1 * * [ "$(date '+\%a')" == "Tue" ] && echo "Its Tuesday!"
00 07 1 * * [ "$(date '+\%a')" == "Wed" ] && echo "Its Wednesday!"
00 07 1 * * [ "$(date '+\%a')" == "Thu" ] && echo "Its Thursday!"
00 07 1 * * [ "$(date '+\%a')" == "Fri" ] && echo "Its Friday!"

Mas esta manhã recebi o seguinte erro:

/bin/sh: 1: [: Thu: unexpected operator
    
por RikT 01.12.2016 / 09:39

2 respostas

0

O problema é uma mistura de sintaxe e comandos adequados no código que você está usando, em vez da forma como o cron foi configurado. Para o que você está tentando alcançar, o código bash deve realmente usar uma declaração if , como esta:

if [[ "$(date '+\%a')" == "\Thu" ]]; then echo "Its Thursday!"; fi

(Observe o conjunto extra de colchetes, o uso de ponto e vírgula e a entrada fi final).

O resultado é o seguinte:

chris@loki:/$ if [[ "$(date '+\%a')" == "\Thu" ]]; then echo "Its Thursday!"; fi
Its Thursday!

Vale a pena notar que no seu código, o booleano && não é adequado, já que é realmente usado para encadear instruções condicionais. Por exemplo:

if [ $condition1 ] && [ $condition2 ]

Espero que isso seja o que você queria depois!

    
por The Pizza Overlord 01.12.2016 / 10:23
0

De man test :

   STRING1 = STRING2
          the strings are equal

Observe que é = , não == . No entanto, este não é o único problema ...

firas@itsuki ~ % sh
$ [ "$(date '+\%a')" == "Thu" ] && echo "Its Thursday!"
sh: 1: [: \Thu: unexpected operator
$ [ "$(date '+\%a')" = "Thu" ] && echo "Its Thursday!"
$

O outro problema é que desde que seu date string +\%a esteja entre aspas simples , ele será interpretado literalmente e, portanto,

$ date '+\%a'
\Thu

que não é o que você quer. Em vez disso, você deve remover as barras invertidas desnecessárias e, em seguida,

$ [ "$(date '+%a')" = "Thu" ] && echo "Its Thursday!"
Its Thursday!
    
por fkraiem 01.12.2016 / 10:33