我有一个bash脚本,可以通过crontab在10分钟内备份我的源代码。脚本工作到8月底。它从9月1日起不起作用。这是脚本:
#!/bin/sh
date=`date +%e-%m-%y`
cd /home/neky/python
tar -zcf lex.tar.gz lex/
echo $date
mv lex.tar.gz lex-$date.tar.gz
mv lex-$date.tar.gz /home/neky/Dropbox/lex/lex-$date.tar.gz
如果我手动执行,则会打印当前日期4-09-12
,此错误mv: target ‘4-09-12.tar.gz’ is not a directory
可能是什么问题?
答案 0 :(得分:2)
当月份的日期是一位数时,您的date
包含一个空格(这也解释了为什么它只在新月停止工作)。这导致你的命令被分开,即
# this is what it you end up with
mv lex.tar.gz lex- 4-09-12.tar.gz
使用date +%d-%m-%y
代替04-09-12
(注意%d
代替%e
)。
如果你真的想在名字中留一个空格,你需要引用你的变量,即:
mv lex.tar.gz "lex-$date.tar.gz"
mv "lex-$date.tar.gz" /home/neky/Dropbox/lex/
答案 1 :(得分:0)
字符%
(日期格式的一部分)是cron脚本中的特殊字符,因此您需要将其转义。