Seu exemplo é incrível, o% é cercado por aspas duplas, simples e de volta. Não há esperança de que a citação de escape possa funcionar.
tuxayo 26/01
Respostas:
126
Você tem que escapar dos %sinais. Eles têm um significado especial nos crontabs:
man (5) crontab:
Percent-signs (%) in the command, unless escaped with backslash (\),
will be changed into newline characters, and all data after the
first % will be sent to the command as standard input.
+1 Muito interessante, eu também não sabia disso. Surpreso por não ter encontrado isso.
Kyle Smith #
3
Bem, eu acabei de encontrar isso. Eu estava usando date +%Fe não estava chegando a lugar algum #
adamo
2
Essa sintaxe tem algum uso útil? Com SHELL=/bin/bash, eu sempre posso reescrever cat %Hello worldcomo cat <<<'Hello world'. Não vejo a necessidade de sintaxe especial.
Witiko 19/07
@Witiko Se a "sintaxe especial" que você está perguntando é a barra invertida para escapar da porcentagem, a própria pergunta do OP é um exemplo em que é necessária: argumentos de comando que exigem porcentagem, principalmente o programa de datas, que seria bastante popular em um comando crontab. Se você está realmente perguntando por que o cron tem essa pegada em primeiro lugar: ou seja: substitui o avanço de linha no lugar de porcentagem, acho que é para que você possa fornecer, em uma única linha que o crontab exija, um "comando" que consiste em dois ou mais comandos subsidiários.
gwideman
O último. E, como mencionei, pode-se fazer o mesmo com o bash. Não há necessidade de desarrumar a sintaxe de Cron.
Witiko 6/09/19
7
Isso não responde diretamente à sua pergunta, mas eu sugiro que você crie um arquivo de script em / usr / local / bin (ou ~ / bin ou o que for apropriado) e chame isso de cron. É mais fácil testar e editar.
Na minha experiência, é muito mais fácil manter 50 linhas em um crontab do que manter 50 arquivos minúsculos. Você deseja transformar scripts mais longos em arquivos de script, com certeza, mas fazê-lo para one-liners pode ser um exagero.
Respostas:
Você tem que escapar dos
%
sinais. Eles têm um significado especial nos crontabs:fonte
date +%F
e não estava chegando a lugar algum #SHELL=/bin/bash
, eu sempre posso reescrevercat %Hello world
comocat <<<'Hello world'
. Não vejo a necessidade de sintaxe especial.Isso não responde diretamente à sua pergunta, mas eu sugiro que você crie um arquivo de script em / usr / local / bin (ou ~ / bin ou o que for apropriado) e chame isso de cron. É mais fácil testar e editar.
fonte