免费注册 查看新帖 |

Chinaunix

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

shell 如何获取上一周的日期 [复制链接]

求职 : 技术支持/维
论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-23 10:03 |只看该作者 |正序浏览
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
62 [报告]
发表于 2010-07-28 11:53 |只看该作者
帮顶的份

论坛徽章:
0
61 [报告]
发表于 2010-07-28 11:48 |只看该作者
晕,貌似越来越复杂了

论坛徽章:
0
60 [报告]
发表于 2010-07-28 11:48 |只看该作者
本帖最后由 welcome008 于 2010-07-28 11:55 编辑
回复  welcome008


    set YY = 2010
set yy = 2010
set MM = 07
set mm = 07
set DD = 2

我在 ...
99超人 发表于 2010-07-28 11:06



试试这一个吧,感觉这个考虑的更全面点,而且修复你的这个空格问题,另外,不能直接通过设置变量调试的,因为这里面有对cal的引用,那都是以当天时间为准的

所以你调试不同的日期,需要修改系统时间才好。
  1. ##!/bin/csh
  2. set YY = `date "+%Y"`
  3. set yy = `date "+%Y"`
  4. set MM = `date "+%m"`
  5. set mm = `date "+%m"`
  6. set DD = `date "+%d"`
  7. @ DD = $DD + 0

  8. if ($MM == "01") then
  9.         @ YY = $YY - 1
  10.         set MM = 12
  11. else
  12.         @ MM = $MM - 1
  13. endif

  14. set rn = `cal | grep -n " $DD "|awk -F\: '{print $1}'`
  15. @ rn = $rn - 1
  16. if ( $rn == 2 ) then
  17.         cal $MM $YY |nawk -v YY=$YY -v MM=$MM 'NF == 7 {for(i = 1;i<NF;i++) printf("%d%02d%02d ",YY,MM,$i);printf("%d%02d%02d\n",YY,MM,$i)}'|tail -1
  18. else if ($rn == 3 && `cal | awk 'NR == 3 {print $NF}'` < 7 ) then
  19.         cal $MM $YY |tail -1|awk -v YY=$YY -v MM=$MM '{for(i = 1;i<=NF;i++) printf("%d%02d%02d ",YY,MM,$i)}'
  20.         cal |nawk -v yy=$yy -v mm=$mm 'NR == 3{for(i = 1;i<NF;i++) printf("%d%02d%02d ",yy,mm,$i);print yy""mm""$NF}'
  21. else
  22.         cal |nawk -v RR=$rn -v yy=$yy -v mm=$mm 'NR == RR{for(i = 1;i<NF;i++) printf("%d%02d%02d ",yy,mm,$i);print yy""mm""$NF}'
  23. endif
复制代码

求职 : 技术支持/维
论坛徽章:
0
59 [报告]
发表于 2010-07-28 11:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
58 [报告]
发表于 2010-07-28 10:59 |只看该作者
set DD = `date "+%d"`
%d     day of month (01..31)
如果DD小于10的话,cal | grep -n " $DD "
就取不 ...
99超人 发表于 2010-07-28 08:50



    我一直感觉还有至少一种情况没考虑到,

    应该还需要一个if判断

你再仔细测一下吧

论坛徽章:
0
57 [报告]
发表于 2010-07-28 10:58 |只看该作者
回复 54# 99超人


    加一句:

@ DD = $DD + 0

论坛徽章:
0
56 [报告]
发表于 2010-07-28 09:15 |只看该作者
不用date,用啥好?

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
55 [报告]
发表于 2010-07-28 08:56 |只看该作者
是不是计算机这个行业,理解一周的概念
星期天算是一周的第一天
99超人 发表于 2010-07-28 08:20



    这个是惯例。周日是一周的第一天。

求职 : 技术支持/维
论坛徽章:
0
54 [报告]
发表于 2010-07-28 08:50 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP