linux下创建文件时,如何用当前日期做为文件名

悬赏:10 发布时间:2008-07-17 提问人:javadonkey (初级程序员)

我写了个每天自动执行的shell脚本
目的是去备份mysql数据库
filename="date +%Y%m%d"
mysqldump --opt databasename -u root | gzip > /var/mysqlbackup/test_$filename.gz

执行上面shell会报错
引用

/etc/cron.daily/autobackup.sh: line 2: /var/mysqlbackup/test_$filename.gz: ambiguous redirect
mysqldump: Got errno 32 on write

我不用日期做文件名,就能正常备份。
请大师指点!!

采纳的答案

2008-07-17 sunsong (初级程序员)

如果就用shell,下面的简单了吧!
DATE=`date +%Y-%m-%d` (注意这里的不是单引号,而是esp下面的那个键)
echo $DATE

提问者对于答案的评价:
谢谢

其他回答

shell脚本不是那么写的,建议先看看shell中怎么得到年月日,再看看怎么连接字符串和变量
suxy (初级程序员) 2008-07-17
我都给你写好函数了,贴心吧!

#include<sys/time.h>
void getCurrTime(char* timestr,char* fmt)
{
time_t ticks;
struct tm *t;

ticks = time(0);
t= localtime(&ticks);
strftime(timestr,127,fmt,t);//Y%为四位年份
}



使用:
char logFileDate[10];
getCurrTime(logFileDate,"%Y-%m-%d");//设置日志文件日期
sunsong (初级程序员) 2008-07-17
你可以根据这个函数,在一个c程序里面得到当前日期,生成文件名,然后使用system来调用mysqldump 命令行
sunsong (初级程序员) 2008-07-17