我是一个Linux新手,我正在使用一个简单的Bash脚本出现了问题。
我有一个程序在运行时不断往日志文件中添加内容。随着时间的推移,日志文件变得非常庞大。我想创建一个启动脚本,在每次运行程序之前重命名和移动日志文件,从而为每次程序运行创建单独的日志文件。以下是我目前拥有的内容:
DATE=$(date +"%Y%m%d%H%M")
mv server.log logs/$DATE.log
echo program
当运行时,我看到这个:: command not found
program
当我进入日志目录并运行dir命令时,我看到这个:
201111211437\r.log\r
发生了什么?我认为我可能遗漏了一些语法问题,但是我似乎无法弄清楚。
更新:感谢shellter在下面的评论中提供的建议,我已经发现问题是由于我在Windows的Notepad++中编辑.sh文件,然后通过ftp发送到服务器,在那里我通过ssh运行该文件。在对该文件运行dos2unix之后,它可以正常工作。
新问题:如何正确保存文件,以避免每次重新发送文件时都需要执行此修复操作?
\r
是回车符,检查你的 Bash 脚本,也许包含在脚本中。 - ajrealDATE=$(date +"%Y%m%d%H%M")
后面添加一些字符串吗? - ajrealset -vx
来打开shell调试。然后您可以看到变量是如何被展开的。如果您在Windows上编辑此文件,然后使用编辑器的ftp客户端将脚本返回到您的unix/Linux环境中,那么很可能会添加DOS换行符到您的脚本中,即CR/LF。对于nix系统,您只需要LF。请尝试在编辑器的设置中关闭它。在您的nix系统上运行dos2unix filename
也可以解决此问题。祝您好运。 - shellter