- 论坛徽章:
- 0
|
本帖最后由 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的引用,那都是以当天时间为准的
所以你调试不同的日期,需要修改系统时间才好。- ##!/bin/csh
- set YY = `date "+%Y"`
- set yy = `date "+%Y"`
- set MM = `date "+%m"`
- set mm = `date "+%m"`
- set DD = `date "+%d"`
- @ DD = $DD + 0
- if ($MM == "01") then
- @ YY = $YY - 1
- set MM = 12
- else
- @ MM = $MM - 1
- endif
- set rn = `cal | grep -n " $DD "|awk -F\: '{print $1}'`
- @ rn = $rn - 1
- if ( $rn == 2 ) then
- 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
- else if ($rn == 3 && `cal | awk 'NR == 3 {print $NF}'` < 7 ) then
- 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)}'
- 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}'
- else
- 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}'
- endif
复制代码 |
|