linux下创建文件时,如何用当前日期做为文件名
悬赏:10 发布时间:2008-07-17 提问人:javadonkey (初级程序员)
我写了个每天自动执行的shell脚本
目的是去备份mysql数据库
执行上面shell会报错
/etc/cron.daily/autobackup.sh: line 2: /var/mysqlbackup/test_$filename.gz: ambiguous redirect
mysqldump: Got errno 32 on write
我不用日期做文件名,就能正常备份。
请大师指点!!
目的是去备份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
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");//设置日志文件日期
#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




