我正在尝试一个简单的bash脚本,将源文件从网站根目录备份到/home/backups/files
目录中。
script2.sh
#!/bin/bash
#START
TIME=`date +%b-%d-%y`
FILENAME=backup-$TIME.tar.gz
SRCDIR="var/www/html/My_Site"
DESDIR="/home/backups/files"
tar cpzfP $DESDIR/$FILENAME $SRCDIR
#END
错误:
tar: /var/www/html/My_Site\r: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
我在每行代码中交叉检查了空格,没有空格。
交叉检查了SRC和DES的文件夹权限(0777)。
我对我为什么会一无所知Cannot stat: No such file or directory
。
在我看来,您的脚本中包含Windows回车符,这是导致失败的原因。线索是\r
SRCDIR变量路径的末尾,在错误代码中显示为/var/www/html/My_Site\r
。显然,该路径不存在,最后添加了路径\r
。
这是一个sed
可以在脚本上运行的命令,以删除回车符,该命令将备份名为的原始脚本script2.sh.bak
。
sed -i.bak 's/\r//g' script2.sh
该脚本现在应该可以正常运行,您可以在验证后删除备份版本。
摆脱那些不必要的回车的另一种方法是使用tr -d '\r' script2.sh
,但是您需要将输出定向到一个新文件,并复制该文件以代替旧文件。
另一有用的事情是确保在脚本中使用变量时引用变量。这是个好习惯。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句