免费注册 查看新帖 |

Chinaunix

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

求一个SHELL日期生成的.呵呵. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-12 11:59 |只看该作者 |倒序浏览
根据系统日期,在某个文件生成相应的日期字符串.内详(多谢)

每个月的 1日 11日 21日,

生成某个文件 文件内容如下

如果系统日期是 2007.10.1日则生成
call rq(2007093)
如果系统日期是 2007.10.11日则生成
call rq(2007101)
如果系统日期是 2007.10.21日则生成
call rq(2007102)
如果系统日期是 2007.11.1日则生成
call rq(2007103)

说明 月份用2位数字显示, 月份后面的分别表示 1 代表上旬 2 中旬旬 3 下旬

论坛徽章:
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
2 [报告]
发表于 2007-10-12 12:31 |只看该作者
$ date  01022007
Tue Jan  2 20:07:00 AUSEDT 2007

$ awk '{print substr((strftime("%d")/10),1,1)+1 }' 1
1

$ date  01142007
Sun Jan 14 20:07:00 AUSEDT 2007

$ awk '{print substr((strftime("%d")/10),1,1)+1 }' 1
2

$ date  01252007
Thu Jan 25 20:07:00 AUSEDT 2007

$ awk '{print substr((strftime("%d")/10),1,1)+1 }' 1
3

其他的你自己做吧.

[ 本帖最后由 rdcwayx 于 2007-10-12 12:41 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-10-12 13:00 |只看该作者

  1. var1=$(date +%Y%m)
  2. var2=$(date +%d)
  3. case $var2 in
  4.   01)
  5.        var2=1
  6.        ;;
  7.   11)
  8.        var2=2
  9.        ;;
  10.   21)
  11.        var2=3
  12.        ;;
  13. esac
  14. call rq("${var1}${var2}")
复制代码

论坛徽章:
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
4 [报告]
发表于 2007-10-12 13:05 |只看该作者
原帖由 springwind426 于 2007-10-12 13:00 发表

var1=$(date +%Y%m)
var2=$(date +%d)
case $var2 in
  01)
       var2=1
       ;;
  11)
       var2=2
       ;;
  21)
       var2=3
       ;;
esac
call rq("${var1}${var2}")


那么除了1号,11号,21号,其他日期怎么处理呢?

论坛徽章:
0
5 [报告]
发表于 2007-10-12 13:35 |只看该作者
没有考虑其他的日期,修改一下:
刚才细看了一下,发觉是每个月的1号是做上个月的下旬的

  1. var2=$(date +%d)
  2. case $var2 in
  3.   01)
  4.        var2=3
  5.        var1=$(date -d "-1 month" +%Y%m)
  6.        ;;
  7.   11)
  8.        var2=1
  9.        $(date +%Y%m)
  10.        ;;
  11.   21)
  12.        var2=2
  13.        $(date +%Y%m)
  14.        ;;
  15.   *)
  16.        var2=
  17.        var1=
  18.        ;;
  19. esac
  20. [ -n "$var2" ] && call rq("${var1}${var2}")
复制代码

[ 本帖最后由 springwind426 于 2007-10-12 13:41 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-10-12 13:41 |只看该作者
呵呵,rdcwayx给出了莫明其妙的答案,
以后,rdcwayx 在考试的时候,如果卷子上的题是这样出的 1+1=?
rdcwayx 则会答到 3-1 或者是 6/3 或者 2*1
这样的回答给分吗?
springwind426 正确,第一次的错误吧

[ 本帖最后由 hbczjzc 于 2007-10-12 13:42 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2007-10-12 13:44 |只看该作者

  1. var2=$(date +%d)
  2. case $var2 in
  3.   01)
  4.        var2=3
  5.        var1=$(date -d "-1 month" +%Y%m)
  6.        ;;
  7.   11)
  8.        var2=1
  9.        $(date +%Y%m)
  10.        ;;
  11.   21)
  12.        var2=2
  13.        $(date +%Y%m)
  14.        ;;
  15.   *)
  16.        var2=
  17.        var1=
  18.        ;;
  19. esac
  20. [ -n "$var2" ] && echo "call rq(${var1}${var2})" > 文件
复制代码

论坛徽章:
0
8 [报告]
发表于 2007-10-12 13:45 |只看该作者
有没有,用一行表达式就搞定的版本.呵呵.

感谢 springwind426  回答

[ 本帖最后由 hbczjzc 于 2007-10-12 13:47 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2007-10-12 13:55 |只看该作者
原帖由 hbczjzc 于 2007-10-12 13:45 发表
有没有,用一行表达式就搞定的版本.呵呵.

感谢 springwind426  回答



写一个很长的在一行上的表达式并没有太大的意义,按照你的想法,这个用很短的字符串表达有难度

论坛徽章:
0
10 [报告]
发表于 2007-10-12 15:21 |只看该作者
呵呵,来个DOS 批处理版的.
考虑到了 20080101
  1. @echo off
  2. del /q RUN.SQL
  3. if %date:~8,2%==01 call :bh&call echo call RMIS_PL_XLJ(%%y%%%%m%%3)>>RUN.SQL
  4. if %date:~8,2%==11 echo call RMIS_PL_XLJ(%date:~0,4%%date:~5,2%1)>>RUN.SQL
  5. if %date:~8,2%==21 echo call RMIS_PL_XLJ(%date:~0,4%%date:~5,2%2)>>RUN.SQL
  6. goto :eof
  7. :bh
  8. set y=%date:~0,4%
  9. set /a m=%date:~5,2%-1
  10. if %m% equ 0 set m=12&set /a y-=1
  11. set m=0%m%
  12. set m=%m:~-2%
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP