perl cron脚本中不需要的\ r \ n

时间:2011-05-19 16:42:21

标签: linux cron

我一直走到互联网的边缘,在支持线上试图弄清楚这一点无济于事:

我正在尝试设置一个cron作业,以便我的RackSpace Cloud站点备份。有很多例子可供使用,但我似乎无法使它们中的任何一个工作,因为它将'\ _'附加到我的所有行的末尾。我尝试了几个编辑器,如记事本和记事本++,但没有任何变化。这是我的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'作为命令的一部分,我不知道如何避免这种情况。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

特别是这有任何原因标记为Perl?

无论如何,我猜你是在Windows上编辑,然后尝试在Linux机器上执行。命令dos2unix应转换行结尾,以便您不会遇到此问题。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

问题在于文件中的行结尾。

在Windows下,文件中的行以字符CR + LF(\ r \ n)结束。在unix下,不使用回车符,因此它们只以LF(\ n)结束。

您需要更改您正在使用的行的类型 - 使用Notepad ++,您可以通过编辑菜单更改文件的格式(查找Unix格式,Unix行结尾等内容)。 / p>

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

相关问题