Tengo un pequeño script que simplemente busca la fecha actual, ejecuta un script PHP y redirige la salida (y los errores) a un nombre de archivo que contiene la fecha actual.
DATE=$(date +"%Y%m%d")
FILE="log/${DATE}.log"
php -q script.php >> $FILE 2>&1
Cuando ejecuto este script en mi máquina local (Windows 7, Aptana IDE), el script PHP funciona bien y el archivo de registro tiene el nombre de archivo esperado, por ejemplo 20140502.log
.
Pero cuando inserto ese script a través de SFTP en mi máquina remota y ejecuto ese script, el nombre de archivo se ve así:
20140502?.log?
¿Cuál podría ser el problema? ¿Es este un error de búsqueda (por ejemplo, la codificación para cargas SFTP es ANSII, donde se espera UTF-8)? ¿O tengo que cambiar algo en el script mismo?
Información sobre el sistema / shell:
[foo@bar path]$ sh --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Dato curioso: si ese script es llamado por un cronjob, los signos de interrogación no aparecen. Solo si ejecuto manualmente el script.
LANG=en_US.UTF-8
.
2>&1 >> $FILE
) envía stderr al terminal y stdout al archivo? Si desea que stderr vaya también al archivo, necesita>> $FILE 2>&1
?
indica que no se puede mostrar un carácter. Ciertamente suena como una diferencia de codificación. ¿Nos puede dar la salida deenv|grep -E '(LC|LANG)'
?