Eu tenho um pequeno script que simplesmente busca a data atual, executa um script PHP e redireciona a saída (e erros) para um nome de arquivo que contém a data atual.
DATE=$(date +"%Y%m%d")
FILE="log/${DATE}.log"
php -q script.php >> $FILE 2>&1
Quando executo esse script na minha máquina local (Windows 7, Aptana IDE), o script PHP funciona bem e o arquivo de log tem o nome de arquivo esperado, por exemplo 20140502.log
.
Mas quando eu envio esse script via SFTP para minha máquina remota e executo esse script, o nome do arquivo fica assim:
20140502?.log?
Qual pode ser o problema? Isso é um erro de ligação (por exemplo, a codificação para uploads de SFTP é ANSII, onde UTF-8 é esperado)? Ou tenho que mudar alguma coisa no próprio script?
Informações sobre o sistema / shell:
[foo@bar path]$ sh --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Fato engraçado: se esse script for chamado por um cronjob, os pontos de interrogação não ocorrerão. Somente se eu executar manualmente o script.
LANG=en_US.UTF-8
.
2>&1 >> $FILE
) envia stderr para o terminal e stdout para o arquivo? Se você quiser stderr para ir para o arquivo, bem como, o que você precisa>> $FILE 2>&1
?
indica que um caractere não pode ser exibido. Certamente soa como uma diferença de codificação. Você pode nos dar a saída deenv|grep -E '(LC|LANG)'
?