perl cron脚本中不需要的\ r

我一直在互联网的边缘和支持线上试图找出这个无济于事:

我正在尝试设置一个cron作业,以便我的RackSpace Cloud站点得到备份。 有很多例子可以使用,但我似乎无法得到他们的任何工作,因为它附加'\ r'到我的所有行的末尾。 我已经尝试了几个编辑器,如记事本和记事本++,但没有任何改变。 这是我的backup.sh的一个例子:

#!/bin/sh webroot='/mnt/example/123456/www.mysite.com/web/content/' backuproot='/mnt/example/123456/www.mysite.com/backup' ################### # Backup Database # ################### mysqldump -h my.database.host -u my_username -p'my_password' my_database_name > $backuproot/db_backup.sql ############### # Backup Site # ############### tar -czpvf $backuproot/site_backup.tar.gz $webroot 

我得到的错误的一个例子:

 tar: /mnt/example/123456/www.mysite.com/web/content/\r\r: Cannot stat: No such file or directory tar: /mnt/example/123456/www.mysite.com/backup\r/site_backup.tar.gz: Cannot open: No such file or directory tar: Error is not recoverable: exiting now tar: Child returned status 2 tar: Error exit delayed from previous errors 

出于某种原因,脚本正在考虑“\ r”作为命令的一部分,我不知道如何避免这种情况。 任何帮助,将不胜感激。

有Windows的编辑器可以处理Linux风格的行尾,例如EditPad。

任何特别的原因是被标记的Perl?

无论如何,我猜你正在编辑Windows,然后尝试在Linux机器上执行。 命令dos2unix应该转换行结束,以便你没有这个问题。

问题是你的文件中的行结束符。

在Windows下,文件中的行以字符CR + LF(\ r \ n)结尾。 在unix下,回车没有使用,所以它们只以LF(\ n)结尾。

你需要改变你正在使用的行的类型 – 使用Notepad ++,你可以通过编辑菜单改变文件的格式(查找类似Unix格式,Unix行结尾等等)。

如果你想了解关于行结尾的所有内容,请参阅http://en.wikipedia.org/wiki/Newline