Ode*_*Ode 28 bash shell cygwin append
我有一个我在Cygwin中执行的shell脚本(也许这就是问题所在).对于这段代码,我只想写第一行,并附加一个换行符:
echo "`date` User `whoami` started the script." >> output.log
echo >> output.log
Run Code Online (Sandbox Code Playgroud)
但是output.log文件似乎永远不会中断.如果我多次运行脚本,就好像第二个echo没有写入文件.
我也尝试过:
echo -e "`date` User `whoami` started the script.\n" >> output.log
Run Code Online (Sandbox Code Playgroud)
它产生相同的结果.
奇怪的是,如果我只是在命令行上输入上面的第二个echo语句,而不附加到文件,它会给我带有尾随换行符的预期输出.
rua*_*akh 31
我打赌问题是Cygwin正在为文件编写Unix行结尾(LF),而你正在用一个期望Windows行结束(CRLF)的程序打开它.要确定是否是这种情况 - 并且对于一些hackish变通方法 - 尝试:
echo "`date` User `whoami` started the script."$'\r' >> output.log
Run Code Online (Sandbox Code Playgroud)
($'\r'
最后是一个额外的回车符;它加上Unix行结束,将导致Windows行结束).
Dan*_*ley 21
尝试:
echo "`date` User `whoami` started the script."$'\n' >> output.log
Run Code Online (Sandbox Code Playgroud)
要不就:
echo $'\n' >> output.log
Run Code Online (Sandbox Code Playgroud)
小智 5
尝试
echo -en "`date` User `whoami` started the script.\n" >> output.log
Run Code Online (Sandbox Code Playgroud)
尝试多次发布。我希望您正在寻找相同的输出。
这也有效,并且 prolly 比 echo 版本更具可读性:
printf "`date` User `whoami` started the script.\r\n" >> output.log
Run Code Online (Sandbox Code Playgroud)