es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

CRON final inesperado /bin/sh: command not found

En Cent OS Linux 7 intento ejecutar esta tarea cron que genera un archivo JSON con el timestamp como nombre de archivo.

timestamp=(date +%s) && php generate_json.php > $timestamp.json;

El problema es que obtengo este error:

/bin/sh: -c: linea 0: EOF inesperado mientras se buscaba ')'

Pensé que tal vez necesitaba escapar algunos caracteres, entonces intenté escapar los paréntesis y obtuve esta respuesta:

/bin/sh: +: comando no encontrado

Así que no estoy seguro de dónde estoy yendo mal aquí. No estoy ejecutando la tarea cron como root, así que no estoy seguro si este es un problema de permisos, si escapar los paréntesis lo resolvió. Todo lo que sé es que hay un error para ambos casos.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el error, debes encerrar el comando entre comillas de la siguiente manera:

    timestamp=$(date +%s) && php generate_json.php > "${timestamp}.json"
    

    El problema fue causado por el comando (date +%s) no estar entre comillas, lo que provocó errores inesperados de fin de archivo. Adicionalmente, se recomienda encerrar el nombre de la variable entre llaves ${timestamp} para evitar posibles problemas de análisis sintáctico. Por último, se agregaron comillas dobles alrededor del nombre del archivo para permitir posibles espacios en el sello temporal. Asegúrate también de verificar los permisos del directorio donde se generará el archivo, para garantizar que el usuario que está ejecutando el trabajo cron tenga acceso de escritura.

Comments are closed.