免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2147 | 回复: 7
打印 上一主题 下一主题

请教文件名的生成如何写,生成的文件始终保持5个,后面的覆盖前面的5个 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-26 20:31 |只看该作者 |倒序浏览
请教我做了一个脚本每天生成一个文件作为备份,现在要求文件数量限制成5个,第六个后的循环覆盖前面的第一个,第二个文件,始终保持文件数5个,请教shell脚本,如何写,生成的文件始终保持5个,后面的覆盖前面的5个??

论坛徽章:
0
2 [报告]
发表于 2007-09-26 21:05 |只看该作者
写一个文件 Y,初始内容是0,
每次都先 idx=$(<Y), 得到一个值,
然后写入日志 log_$idx。再
((idx += 1)),如果idx 等于 5, 则 idx=0.
然后 echo $idx >Y。

((idx += 1))需要ksh或者bash的支持?如果写成expr,可能通用性更好些。
好像一般的sh支持 idx=$(($idx+1))。这个写法也会通用些吧。

论坛徽章:
0
3 [报告]
发表于 2007-09-26 21:13 |只看该作者
我的意思是这样,根据当前的日期,计算出距离1970年1月1日的天数,然后除以5,余数就是一个文件名,不知道这样的shell脚本应怎么写?

论坛徽章:
0
4 [报告]
发表于 2007-09-26 21:17 |只看该作者
为什么一定要计算天数呢?
看看你的date命令,如果不是GNU版本的,可能不支持这个参数。
查查以往的帖子,有根据日期计算天数的脚本。应该还有几个。

论坛徽章:
0
5 [报告]
发表于 2007-09-26 21:18 |只看该作者
我的操作系统是Redhat AS3,除以5的余数,怎么写啊,不好意思

论坛徽章:
0
6 [报告]
发表于 2007-09-26 21:31 |只看该作者
创建一个文件
lastfile
内容为0

生成的备份文件名是backup1..backup5

  1. #!/bin/bash
  2. if [ -f lastfile ]
  3. then
  4.   i=$(cat lastfile)
  5. else
  6.   i=0
  7. fi
  8. [ X$i == X5 ] && i=0
  9. ((i++))
  10. filename="backup${i}"
  11. #do some thing and output to filename
  12. echo $i > lastfile  #update lastfile
复制代码

论坛徽章:
0
7 [报告]
发表于 2007-09-26 21:58 |只看该作者
原帖由 lhjiang 于 2007-9-26 21:18 发表
我的操作系统是Redhat AS3,除以5的余数,怎么写啊,不好意思

换作是我,如果写一段脚本不是很麻烦,就可以得到比较好的通用性。一定会抛弃一个简洁但是支持性比较弱的东西:)

论坛徽章:
0
8 [报告]
发表于 2007-09-27 10:36 |只看该作者
其实可以bak1 bak2 bak3……的
然后
……
mv bak2 bak3
mv bak1 bak2
echo >bak1
如果第六个覆盖第一个,那只能从时间上看出文件的顺序.万一你touch了一下,那就完了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP