`
hany
  • 浏览: 62112 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

根据日期获取星期的shell脚本

阅读更多
自己对shell脚本不熟悉,在chinaunix上cp了一段根据日期获取星期的脚本。结果测试没问题,项目上线了,出错了。最后测试那上面的那个脚本部分时段管用。为了防止害人无数,我把从网上找到的正确的贴出来。
#!/bin/sh

# SAVE THIS CODE AS dayofweek.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:20090520
# then
# Returns a value between 0 and 6 to represent the day of the
# week where 0=Sun,1=Mon,...6=Sat
#
# e.g dayofweek.sh 20090520
#
# This formula is Year 2000 compliant.
# It is not compliant using dates previous to Oct 1752

#
YMD=$1
YEAR=`echo $YMD|cut -c0-4`
MONTH=`echo $YMD|cut -c5-6`
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) % 7
Z=`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
# ========================

分享到:
评论

相关推荐

    UNIX Shell脚本编程详解

    此外,可以通过`echo`命令打印输出信息,例如`echo "Mr.$USER, Today is: " $(date +%B%d%A)`,这里`$(date +%B%d%A)`是命令替换,用于获取当前的月份、日期和星期。 控制流程是Shell脚本的核心部分,包括条件语句...

    Shell脚本编程详解

    根据以上步骤,可以编写如下Shell脚本: ```sh #!/bin/sh cd /root ls -l mkdir kk cd kk vi aa # 编辑完成后需手动保存 chmod +x aa cd /root ``` 这个示例展示了如何利用Shell脚本完成一系列的操作,同时也体现...

    Linux命令行与shell脚本编程- 控制脚本案例

    格式包括分钟、小时、日期、月份和星期,例如`0 0 * * * /path/to/script.sh`表示每天凌晨0点运行脚本。 6. **移除捕捉**:在某些情况下,可能需要取消之前设置的信号捕捉。这可以通过在`trap`命令中使用特殊值`-`...

    Linux-定期清内存缓存-shell脚本

    - 配置格式为`分钟 小时 日期 月份 星期 命令`,其中每个字段都有特定的取值范围。 通过以上分析,我们可以了解到如何编写和执行一个简单的shell脚本来定期清理Linux系统的内存缓存,以及如何使用crontab来自动化...

    Linux常用Shell脚本珍藏

    - 日期获取:`date +%y`, `date +%m`, `date +%d`,分别获取当前的年、月、日。 - 文件压缩:`tar zcvf`,其中 `z` 表示使用 gzip 进行压缩。 2. **逻辑结构**: - 目录创建与切换:确保备份目录存在。 - 文件...

    shell中获取时间

    本文将深入探讨如何利用`date`命令在shell环境中获取各种形式的时间和日期,包括当前日期、过去或未来的日期以及执行时间相关的计算。 #### 基础用法:获取当前日期 最简单的使用方式是直接键入`date`,这将显示...

    shell 计算日期

    以上四个函数涵盖了在Shell脚本中计算日期的多种常见需求,包括获取指定日期前后的具体日期、计算一周中的某一天以及获取指定日期前最近的一个星期五。这些函数不仅可以独立使用,也可以组合起来解决更复杂的日期...

    Shell脚本实现的阳历转农历代码分享

    闲来无事,想在Linux下用shell写一个阳历转农历的脚本,断断续续大概一个星期终于搞定。现在拿出来与大家分享。 1、缘由 本脚本实现原理是查表法(因为公式有误差);基于农历新年为基准,对农历新年前后两个不同的...

    Crontab+Shell做Nginx日志切割脚本实例代码

    此时,通过Crontab定时任务配合Shell脚本来实现日志的自动切割,是一种实用且高效的方法。 **日志切割脚本原理:** 1. **移动日志文件**:首先,脚本会将当前的日志文件(如`/home/wwwlogs/error.log`)移动到特定...

    shell打印给定日期的日历

    在Shell脚本编程中,我们经常需要处理日期和时间,本文将详细介绍如何使用Shell脚本来打印给定日期的日历。首先,我们来看一个基础的示例,该示例用于打印当前月份的日历。 1. **基础Shell脚本解析** 脚本的开头...

    shell时间详细介绍

    shell时间shell 日期 直接调用系统变量 获取今天时期:`date +%Y%m%d` 或 `date +%F` 或 $(date +%y%m%d) 获取昨天时期:`date -d yesterday +%Y%m%d` 获取前天日期:`date -d -2day +%Y%m%d` 依次类推比如获取...

    Linux定时任务以及脚本编写docx

    这里的星号分别代表分钟、小时、日期、月份和星期,`0 1 * * *`表示每天的第0分钟(即凌晨1点)。 3. **保存并退出**:关闭编辑器并保存更改。 4. **赋予脚本执行权限**:使用`chmod +x /path/to/your/script.sh`...

    shell下获取上一个月,星期时间和时间戳的范围实例

    在Shell脚本编程中,处理日期和时间是常见的任务,特别是在需要进行自动化任务调度或数据分析时。本篇文章将深入探讨如何在Shell环境下获取上个月、星期时间以及时间戳的范围。我们将通过具体的代码实例来解释这些...

    Linux下定时自动执行Oracle_SQL

    - **Shell脚本(ss.sh)**:该脚本首先获取当前日期和时间(RQ),然后将其写入日志文件。接着,定义输出文件路径,并调用sqlplus工具执行SQL脚本,最终将查询结果保存至指定文件。 - **Crontab配置**:配置文件中...

    Oracle实现每天异增量备份脚本.

    第二行通过`date +%a`命令获取当前日期的星期缩写,如“Sun”代表星期日。这个变量将被用来决定当天应该执行哪种级别的增量备份。 ```bash case $DAY in Sun) rman catalog rman/rman@orcl target sys/oracle@ora...

    aix系统定时执行oracle数据库删除备份脚本

    综上所述,在AIX系统中通过Cron定时任务结合自定义Shell脚本来实现Oracle数据库的自动化备份及备份文件管理,是一种非常实用且高效的方法。这种方式不仅能够保证数据的安全性,同时也极大地减轻了管理员的工作负担。

    shell笔记,包括备份等命令

    Shell笔记主要涵盖的是在AIX操作系统环境下如何使用Shell脚本来执行基本的文件备份操作以及如何配置Cron定时任务。AIX(Advanced Interactive eXecutive)是IBM开发的一款Unix操作系统,广泛应用于大型机和服务器。 ...

    Shell中取今天、昨天、前天的时间操作代码

    在Shell脚本编程中,有时候我们需要获取当前日期或者过去某一天的具体日期,比如今天、昨天、前天。本文将详细讲解如何在Shell中通过命令行工具`date`来实现这些时间操作。 首先,我们来看如何获取今天的时间。在...

    Shell中关于时间和日期的函数总结

    在Shell脚本编程中,处理时间和日期是常见的需求。本文将详细介绍如何在Shell中使用内置函数和命令来操作和格式化日期与时间。首先,我们可以直接通过`date`命令来获取系统当前的时间和日期。 1. **获取当前日期**...

    Linux下tomcat日志catalina.out按天(/周)分割

    首先,我们可以编写一个shell脚本来实现这个功能。这个脚本通常会包含以下几个步骤: 1. **设置变量**:定义日志文件路径、备份目录、日期格式等。 2. **获取当前日期**:使用`date`命令获取当前日期,以确定新日志...

Global site tag (gtag.js) - Google Analytics