Shell脚本中时间处理

1.脚本内容

#!/bin/bash

#环境变量

#设置环境变量和sql文件格式相符

source /etc/profile
export LD_LIBRARY_PATH="/usr/lib/oracle/12.1/client64/lib"

export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"

export LANG=en_US.UTF-8

date=`cat /home/oracle/channelMonitoring/date/trade_zf`

sysdate=`date +"%s"`

date2=`date +"%s" -d "${date}"`

x=`expr \${date2} - \${sysdate}`

if [ $x -lt 1800 ]; then

#初始变量

CHECKORAHOST=172.16.219.101

FILEDIR="/home/oracle/channelMonitoring"

SQLDIR="${FILEDIR}/sql/trade_zf.sql"

DATADIR="${FILEDIR}/data/trade_zf.txt"

DATEFLAG="/home/oracle/channelMonitoring/date/trade_zf"

cat /dev/null >  ${SQLDIR}

cat /dev/null >  $DATADIR

echo -n "select  ('trade_zf'||',trade_code='||tr.trade_code||',status='||tr.status||',merchant='||m.merchant_code||',channel='||tr.bank_code||',bank='||tr.fld3||' value='||(case when tr.status=2 then 1 else 0 end)||' '||ceil((tr.trade_end_time - to_date('1970-01-01','yyyy-mm-dd'))*86400 - TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))*3600)||round(dbms_random.value(100000000,999999999)) ) as \"插入语句\" from tvpay2.trade_record tr

join tvpay2.merchant m on tr.provider_id = m.id

where (tr.trade_code  like 'ZF%' or tr.trade_code = 'DK0003' or tr.trade_code = 'DK0026' ) and ((to_date('$date', 'yyyy-mm-dd hh24:mi:ss')-to_date('1970-01-01','yyyy-mm-dd hh24:mi:ss'))*86400 - (tr.trade_end_time-to_date('1970-01-01','yyyy-mm-dd hh24:mi:ss'))*86400) between 0 and  1800 and tr.status in (2,3);

" >> $SQLDIR

sqlplus -s user/password@x.x.x.x:1521/orcl<<EOF

set echo off;

set feedback off;

set head off;

set pagesize 0;

set linesize 433;

set termout off;

define fi1= '${DATADIR}'

prompt *** Spooling to &fi1

spool &fi1

@${SQLDIR};

spool off;

exit;

EOF

sed  -i  's/[ \t]*\$//g'  ${DATADIR}

curl -i -XPOST 'http://x.x.x.x:8086/write?db=monitor' --data-binary @${DATADIR}

date2=`date +"%s" -d "${date}"`

date3=1800

nextdate=`expr \$date2 + \$date3`

echo $nextdate

nextdate=`date -d @${nextdate} "+%Y-%m-%d %H:%M:%S"`

cat /dev/null > ${DATEFLAG}

echo \${nextdate}  >> ${DATEFLAG}

else

echo "已经执行过了,请过30分钟之后在执行。"

fi

2.注意事项

2.1清空文件

cat /dev/null > 目标文件                           ###echo "" > 目标文件有空行

2.2shell调用sql文

汉字以及双引号需要使用转义字符\字符

2.3sql文调用shell变量

‘${date}’ 需要加单引号

2.4算法使用

expr 以及if语句中的判断使用lt

###备注

export LD_LIBRARY_PATH="/usr/lib/oracle/12.1/client64/lib"

在定时任务中,没有这行,可能执行会报错

###备注

export NLS_LANG="AMERICAN_AMERICA.UTF8"

放在配置文件中,防止中文乱码

start_seconds=\$(date --date="\$starttime" +%s)

如何将一个时间格式的变量变换成秒

Shell脚本中时间处理的更多相关文章

  1. shell脚本中>/dev/null的含义

    shell脚本中>/dev/null的含义 shell脚本中有段使用sqlplus的部分: sqlplus ${user_id} <<! >/dev/null spool sp ...

  2. Shell脚本中的并发(转)

    转自http://blog.csdn.net/wangtaoking1/article/details/9838571 主要记录一下Shell脚本中的命令的并发和串行执行. 默认的情况下,Shell脚 ...

  3. linux,shell脚本中获取脚本的名字,使用脚本的名字。

    需求描述: 写shell脚本的过程中,有时会需要获取脚本的名字,比如,有的时候,脚本 中会有usage()这种函数,可能就会用到脚本的名字. 实现方法: shell脚本中,通过使用$0就可以获取到脚本 ...

  4. 转 在shell脚本中使用expect实现scp传输问题

    1.安装expect expect用于shell脚本中自动交互,其是基于tcl编程语言的工具.所以安装expect首先安装tcl.本文中使用的是expect5.45和tcl8.6.6. 安装tcl [ ...

  5. shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    7月11日任务 20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法20.4 shell脚本中的变量 20.1 shell脚本介绍 1.shell脚本语言是linu ...

  6. Linux centosVMware shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

    一. shell脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断.循环等语法 可以自定义函数 shell是系统命令的集合 shell脚 ...

  7. shell脚本中的各种表达式介绍和使用

    #前言:在shell脚本中,有各种的表达式,包括有条件测试表达式,文件表达式,字符串表达式,整数表达式,接下来我们来了解一下他们的使用方法 1.条件测试表达式 #首先来看一下条件测试语法 #条件测试语 ...

  8. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  9. shell脚本中的反引号使用 `

    反引号是~的英文切换 在shell脚本中,反引号允许将shell命令的输出赋值给变量. test=`date` 这样shell会执行反引号中的命令.并将执行的结果赋值给变量tests.

随机推荐

  1. TyvjP1863 [Poetize I]黑魔法师之门(2014-8-27)

    P1863 [Poetize I]黑魔法师之门 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 经过了16个工作日的紧张忙碌,未来的人类终于收集到了足够的能源 ...

  2. linux 搭建unixODBC ,并对接 PostgreSQL 9.3.4

    环境:suse 11 ,64位的操作系统 unixODBC 版本:2.3.2 PostgreSQL 9.3.4 1 编译安装 unixODBC 下载 unixODBC :http://www.unix ...

  3. 转 java ClassLoader

    http://blog.csdn.net/xyang81/article/details/7292380 http://www.ibm.com/developerworks/cn/java/j-lo- ...

  4. MyBatis逆向工程代码的生成以及使用详解(持续更新)

    逆向工程简介什么是逆向工程:        mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java.ma ...

  5. STP-1-802.1D生成树协议及改进

    第一个 IEEE 标准化的STP也常称为“ 传统”STP,最初在802. 1D中进行了描述. 之后得到了改进,发布在所谓的修正案中:快速 STP( RSTP),在修正案802. 1w 中描述了它的标准 ...

  6. numpy使用示例

    numpy介绍 创建numpy的数 一维数组是什么样子 可以理解为格子纸的一行就是一个一维数据 two_arr = np.array([1, 2, 3]) 二维数组什么样子 理解为一张格子纸, 多个一 ...

  7. Codeforces Round #390 (Div. 2) A

    One spring day on his way to university Lesha found an array A. Lesha likes to split arrays into sev ...

  8. CATIA 基础详解 第01章 CATIA初认识

    1.1 CATIA V5产品介绍 CATIA V5是基于美国IBM公司与法国达索系统公司(Dassault Systèmes)软件解决方案推出的新一代产品,它致力于满足以设计流程为中心的设计需求.它提 ...

  9. 解决Centos下SSH登录慢的问题

    产生这个问题的原因是:server的sshd会去DNS查找访问client IP的hostname,如果DNS不可用或者没有相关的记录就会花费大量的时间. 1.在server上/etc/hosts文件 ...

  10. 用注解@DelcareParents实现引用增强

    引用增强,是一个比较特殊的增强,不同于其他方法级别的增强. 引用增强可以实现:一个Java类,没有实现A接口,在不修改Java类的的情况下,使其具备A接口的功能. 先看看背景,我们有个Love接口: ...