En crontab, ¿puedes hacer algo como esto?¿Cómo es% especial en crontab?
* * * * * echo $(date +%F) >> /path/date.txt
En crontab, ¿puedes hacer algo como esto?¿Cómo es% especial en crontab?
* * * * * echo $(date +%F) >> /path/date.txt
El problema real de su línea de crontab no es el $()
o los acentos graves. El problema es el signo de porcentaje %
. Tiene un significado especial en crontabs.
Desde la página de manual:
...
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.
...
Si escapar el signo de porcentaje con \
que debería funcionar como se esperaba:
* * * * * echo $(date +\%F) >> /tmp/date.txt
o
* * * * * echo `date +\%F` >> /tmp/date2.txt
tanto trabajo en mi sitio.
Tenga en cuenta que las barras invertidas se pasan al intérprete. el de arriba funcionará porque el proyectil despoja a la barra diagonal inversa, pero el caparazón dejará una barra invertida dentro de una cadena, según http://www.hcidata.info/crontab.htm –
Odio el cron con furia – Willem
mail show me this. /bin/sh -c "echo $ (date + /bin/sh: -c: línea 0: EOF inesperado al buscar el emparejamiento') ' /bin/sh: -c: línea 1: error de sintaxis: inesperado Fin del archivo – JuanPablo
Eso es un [uso inútil de 'echo'] (http://www.iki.fi/era/unix/award.html#echo), sin embargo. Cualquier cosa que se vea como' echo $ (foo) 'es mejor escrito simplemente 'foo' (a menos que use específicamente una sustitución de comando sin comillas para hacer que el intérprete de comandos normalice espacios en blanco y expanda comodines en el resultado de' foo'). – tripleee