現在の日付を取得し、PHPスクリプトを実行して、出力(およびエラー)を現在の日付を含むファイル名にリダイレクトする小さなスクリプトがあります。
DATE=$(date +"%Y%m%d")
FILE="log/${DATE}.log"
php -q script.php >> $FILE 2>&1
このスクリプトをローカルマシン(Windows 7、Aptana IDE)で実行すると、PHPスクリプトは正常に機能し、ログファイルには期待されるファイル名が含まれます20140502.log
。
しかし、SFTP経由でそのスクリプトをリモートマシンにプッシュしてそのスクリプトを実行すると、ファイル名は次のようになります。
20140502?.log?
何が問題なのでしょうか?これはエンコードエラーですか(たとえば、SFTPアップロードのエンコードはANSIIであり、UTF-8が必要です)?または、スクリプト自体で何かを変更する必要がありますか?
システム/シェルに関する情報:
[foo@bar path]$ sh --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
面白い事実:そのスクリプトがcronjobによって呼び出された場合、疑問符は発生しません。スクリプトを手動で実行した場合のみ。
行末に印刷できない文字が含まれている可能性があります(WindowsのCRLFなど)。次のコマンドを実行します。
cat -A scriptname
リモートマシンでは、スクリプト内のすべての文字が表示されます。次に、実行中のunixライクな形式に変換できます
dos2unix scriptname
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加