J'ai un petit script qui récupère simplement la date actuelle, exécute un script PHP et redirige la sortie (et les erreurs) vers un nom de fichier contenant la date actuelle.
DATE=$(date +"%Y%m%d")
FILE="log/${DATE}.log"
php -q script.php >> $FILE 2>&1
Lorsque j'exécute ce script sur ma machine locale (Windows 7, Aptana IDE), le script PHP fonctionne correctement et le fichier journal a le nom de fichier attendu, par exemple 20140502.log
.
Mais lorsque je pousse ce script via SFTP sur ma machine distante et exécute ce script, le nom de fichier ressemble à ceci:
20140502?.log?
Quel pourrait être le problème? S'agit-il d'une erreur de connexion (par exemple, le codage pour les téléchargements SFTP est ANSII, où UTF-8 est attendu)? Ou dois-je changer quelque chose dans le script lui-même?
Informations sur le système / shell:
[foo@bar path]$ sh --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Fait amusant: si ce script est appelé par un cronjob, les points d'interrogation ne se produisent pas. Seulement si j'exécute manuellement le script.
LANG=en_US.UTF-8
.
2>&1 >> $FILE
) envoie stderr au terminal et stdout au fichier? Si vous voulez que stderr >> $FILE 2>&1
?
indique qu'un caractère ne peut pas être affiché. Cela ressemble certainement à une différence de codage. Pouvez-vous nous donner la sortie deenv|grep -E '(LC|LANG)'
?