I have a shell script that I am executing in Cygwin (maybe this is the problem). For this bit of code, I simply want to write the first line, and append a line break:
echo "`date` User `whoami` started the script." >> output.log
echo >> output.log
But the output.log file never seems to take the break. If I run the script multiple times, it's as if the second echo doesn't write to the file.
I've also tried:
echo -e "`date` User `whoami` started the script.\n" >> output.log
It yields the same results.
The odd thing is if I just enter the second echo statement above on the command line, without appending to the file, it gives me the expected output with the trailing line break.
解决方案
I'm betting the problem is that Cygwin is writing Unix line endings (LF) to the file, and you're opening it with a program that expects Windows line-endings (CRLF). To determine if this is the case — and for a bit of a hackish workaround — try:
echo "`date` User `whoami` started the script."$'\r' >> output.log
(where the $'\r' at the end is an extra carriage-return; it, plus the Unix line ending, will result in a Windows line ending).