linux中shell 循环处理每天数据

日期循环,在处理某些按日期存放的数据中很有用。尤其是测试和补录,删除,重新处理数据。但是如果遇到跨月等情况,单纯用数值循环是不行的。
本shell即可用于处理多日数据情况。

 代码如下 复制代码

#!/usr/bin/env bash
#author: Andy Zhou
#Date:2013.8.6

source dateutil.sh
begin=20130701
end=20130904

for (( d=$begin; d<=$end; d=`getnextday $d `)); do
echo "date:"$d
#. myshell.sh $d

日期工具 dateutil.sh:

 代码如下 复制代码

#/usr/bin/env bash
#author:Andy Zhou
#date:2013.8.2
getnextday()
{
    #date -d "2013-09-10 +1 day " +%Y-%m-%d
    date -d "$1 +1 day " +%Y%m%d
}
getyearmonth()
{
    date +%Y%m --date=$1 #shortdate
}
getday()
{
    date +%d --date=$1 #shortdate
}

long_date()
{
    date +%Y-%m-%d --date=$1 #shortdate
}
short_date()
{
    date +%Y%m%d --date=$1 #longdate
}
long_yesterday()
{
     date --date='1 day ago' +%Y-%m-%d
}
yesterday()
{
     date --date='1 day ago' +%Y%m%d
}
long_today()
{
    date +%Y-%m-%d
}
today()
{
    date +%Y%m%d
}
now()
{
    date '+%Y-%m-%d %H:%M:%S'
}
last_month()
{
    date --date='1 month ago' '+%Y%m'
}
year()
{
     date +%Y
}
month()
{
    date +%m
}
sec2date()
{
     date -d "1970-01-01 UTC $1 seconds" "+%Y%m%d"
}
sec2datetime()
{
     date -d "1970-01-01 UTC $1 seconds" "+%Y%m%d %H:%M:%S"
}

时间: 2024-08-17 20:07:35

linux中shell 循环处理每天数据的相关文章

应用-Linux中shell脚本问题

问题描述 Linux中shell脚本问题 ]我有shell脚本,放在/bin/目录下,内容如下: #!/bin/sh cd /usr /sbin/insmod s3c_ts.ko ./digitpic ./MSYH.TTF & 当我开发板上电以后我手动执行手动执行test.sh 我的digitpic应用程序能够正常启动 当我在/etc/init.d/rcS 文本里面最后添加exec test.sh 提示说这个触摸屏读取错误,也就是/sbin/insmod s3c_ts.ko这部分错误了,就只有触

linux中shell变量$#,$@,$0,$1,$2的含义解释

比如脚本名称叫start.sh 输入参数三个: 1 2 3 运行test.sh 1 2 3后 $*为"1 2 3"(一起被引号包住) $@为"1" "2" "3"(分别被包住) $#为3(参数数量) linux中shell变量$#,$@,$0,$1,$2的含义解释:  变量说明:  $$  Shell本身的PID(ProcessID)  $!  Shell最后运行的后台Process的PID  $?  最后运行的命令的结束代码

linux中Shell命令用法入门教程

什么时候使用Shell 因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化.因此,Shell脚本只要"用心写"一次,即可应用到很多系统上.因此,之所以要使用Shell脚本是基于:     简单性:Shell是一个高级语言:通过它,你可以简洁地表达复杂的操作.     可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行.     开发容易:可以在短时间内完成一个功能强大又妤用的脚本. 但是,考虑到Shell脚本的命令限制和效率问题

linux中shell脚本实现下载完关机_linux shell

用mint 有一段时间了,下载基本用firefox,有时下载几个G的游戏.可是firefox没有找到下载完关机的选择.处于这个原因,写了这个. download_shutdown.sh #!/bin/bash # Created By: Demo <demo@demo.com> # Created Time: 2015-01-30 12:36:44 # Modified Time: 2015-01-30 12:54:21 dir=$1 while [ "1" ] do if

linux中shell模拟多线程执行任务详解

shell本身是不能实现多线程的,但是可以通过启动子进程,并将子进程放入后台执行来模拟多线程,为了在提高脚本执行效率的同时又不明显增加负载的作用,还需要对同时放入后台的进程数做下限制.  代码如下 复制代码 #!/bin/bash set -x  # 开启调试模式 #判断是否有参数 if [ $# != 1 ];then     echo "您输入的参数有误"     exit -1 fi # 允许的最大进程数 MAX_THREAD_NUM=5 tmp_fifo_file=/tmp/$

linux中shell脚本导出备份mysql数据库

最近公司有个需求需要从mysql数据库中查询状态为60的数据并导出. 实例代码如下: #!/bin/bash   dir="/cache1" ##要存到导出数据的目录名 open="open" ##导出数据的文件名称 open_dir="${open}.$(date +%Y%m%d)" ##导出数据的文件名称,按日期区分 db="/opt/trustedm/mysql/current/bin/mysql -uroot -pmv_XQ_m

Linux中利用Rsync+Inotify-tools实现数据实时同步备份

说明: 操作系统:CentOS 5.X 源服务器:192.168.21.129 目标服务器:192.168.21.127,192.168.21.128 目的:把源服务器上/home/www.111cn.net目录实时同步到目标服务器的/home/www.111cn.net下 具体操作: 第一部分:分别在两台目标服务器192.168.21.127,192.168.21.128上操作 一.分别在两台在目标服务器安装Rsync服务端 1.关闭SELINUX vi /etc/selinux/config

Linux中shell命令的用法和技巧

使用Linux shell是我每天的基本工作,但我经常会忘记一些有用的shell命令和l技巧.当然,命令我能记住,但我不敢说能记得如何用它执行某个特定任务.于是,我开始在一个文本文件里记录这些用法,并放在我的Dropbox里,现在,向大家分享这个文件.这个文件我会不断的更新.需要注意一点的是,有些用法需要在你的Linux系统里安装额外的软件. UPDATE: November 25, 2013 检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 &&

linux中Shell脚本分割Nginx日志,并定期清理例子

一:新建脚本文件 vim cut_nginx_log.sh #!/bin/bash #nginx access log segmentation shell script #www.webyang.net #日志目录 log_dir="/usr/local/nginx/logs/" cd $log_dir time=`date +%Y%m%d --date="-1 day"` #nginx启动目录 nginx_dir="/etc/init.d/nginx&