通过Shell判断某个日期是星期几
来源:互联网 发布:安防软件推广 编辑:程序博客网 时间:2024/04/28 22:15
一个朋友有如下的备份需求:
1. RMAN备份片统一存放在/datafile/这个路径下
2. 然后每周六归档备份完毕后,把上周日到本周六的备份文件统一cp到一个目录下(/datafile/tarfile),然后把这个目录gtar压缩打包,以当天日期命名比如:prod_yyyymmdd.tar.gz
3. 把prod_yyyymmdd.tar.gz传到备份服务器,将/datafile/tarfile/下面的文件清空;
4. 定期将/datafile/下面备份成功的文件(/datafile/目录只保留一个月以内的备份片)
但是有个问题卡住了,如何判断某个日期是星期几? 我觉得通过这个方法去操作,不太方便,写法也比较复杂;先不考虑rman的备份思路,下面我们解决这个问题
-----------------------------------------------------------------------------------------
有两种方法:
1.通过date命令获取,获取结果:0为星期日,1-6为星期一至星期六。
date +%w 取得当天是星期几
date -d 20120311 +%w 取得2012年3月11日是星期几
2.通过脚本获取
vim c_test.sh 创建脚本,输入以下所贴出的代码
chmod +x c_test.sh 给予脚本执行权限
./c_test.sh 20120311 取得2012年3月11日是星期几
以下是该脚本的代码(其实通过这个脚本我们就可以看出从日期获取星期几的计算方法了):
#!/bin/bash# SAVE THIS CODE AS c_test.sh## Uses Zellers Congruence calculation to use a date and give# the day of the week that date was.## This function expects 1 Arguments,# YYYYMMDD# example:20120311# then# Returns a value between 0 and 6 to represent the day of the# week where 0=Sun,1=Mon,...6=Sat## e.g c_test.sh 20120311## This formula is Year 2000 compliant.# It is not compliant using dates previous to Oct 1752 #export YMD=$1export YEAR=`echo $YMD|cut -c0-4`export MONTH=`echo $YMD|cut -c5-6`export DAY=`echo $YMD|cut -c7-9` # Adjust Month such that March becomes 1 month of# year and Jan/Feb become 11/12 of previous year# ============================================= if [ $MONTH -ge 3 ];then MONTH=`expr $MONTH - 2`else MONTH=`expr $MONTH + 10`fi if [ $MONTH -eq 11 ] || [ $MONTH -eq 12 ] ; then YEAR=`expr $YEAR - 1`fi# ============================================== # Split YEAR into YEAR and CENTURY# ================================CENTURY=`expr $YEAR / 100`YEAR=`expr $YEAR % 100`# ================================ # Black Magic Time# ================#Z=(( 26*$MONTH - 2 ) / 10) + $DAY + $YEAR + ( $YEAR/4 ) + ( $CENTURY/4 ) - (2 * $CENTURY) + 77) % 7Z=`expr \( $MONTH \* 26 - 2 \) / 10`Z=`expr $Z + $DAY + $YEAR`Z=`expr $Z + $YEAR / 4`Z=`expr $Z + $CENTURY / 4`Z=`expr $Z - $CENTURY - $CENTURY + 77`Z=`expr $Z % 7`if [ $Z -lt 0 ] ; then Z=`expr $Z + 7`fi# ================ echo $Z# Sun 0# Mon 1# Tue 2# Wed 3# Thu 4# Fri 5# Sat 6# ========================
最后,想特别提醒一点的是,如果是采用crontab计划任务的方式来调用某个脚本执行,并希望在指定的星期几运行的话,直接通过crontab -e修改最后一个 * 号就可以实现,同样是0为星期天,1-6分别为星期一到星期六,不必劳神费力在脚本中判断当天是星期几了。
补充:
日期(Linux):
TODAY=`date +%Y%m%d`
YESTERDAY=`date -d'-1 day' +%Y%m%d`
LAST_MONTH=`date -d'-1 month' +%Y%m%d`
日期(bsd):
YESTERDAY=`date -v-1d +%Y%m%d`
原文:http://www.cnblogs.com/ebs-blog/archive/2012/03/13/2393527.html
- 通过Shell判断某个日期是星期几
- Shell简易程序判断某个日期是星期几
- oracle中如何判断某个日期是星期几
- oracle中如何判断某个日期是星期几
- c++ 计算某个日期是星期几,判断某年某月一号是星期几
- 判断日期是星期几
- 判断某个日期星期几的方法
- 输入某个日期,求出是星期几
- JAVA判断当前日期是星期几
- JAVA判断当前日期是星期几
- JAVA判断当前日期是星期几
- C# 判断日期是星期几
- JAVA判断当前日期是星期几
- java判断当前日期是星期几
- 给定日期,判断是星期几
- 根据日期判断是星期几
- 判断指定日期是星期几
- C++输入日期判断是星期几
- C语言中堆和栈的区别
- 【Objective-C】04-第一个OC程序解析
- Android MTK平台修改开机动画,开机logo
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求的服务
- IOS ASIHttp库的使用总结
- 通过Shell判断某个日期是星期几
- shell中uniq与sort -u 两种去重的对别
- 如何使用指向函数的指针数组以及C++11中auto的用法?
- COCOS2D-x 启动之 main详解
- easyui datagrid合并单元格算法 复杂度为o(1) NB
- 基于SAML的单点登录介绍
- http svn配置
- 内存篇之程序内存消耗评价指标
- EditTextPreference 小标题修改为显示内容