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. Codeforces482B【线段树构造】

    题意: 有M个限制,每个限制有l,r,q,表示从a[l]~a[r]取且后的数一定为q,问是否有满足的数列. 思路: 看到大牛说是线段树,线段树对于区间操作,印象中乘啊,+啊,-啊都不错,但是并没有就是 ...

  2. A - Wireless Network

    #include <cstdio> #include <algorithm> #include <cstring> #include <iostream> ...

  3. WKWebView简单使用

    #import <WebKit/WebKit.h> @interface SchoolOverviewsViewController ()<WKUIDelegate,WKNaviga ...

  4. JS面向对象方法(二) 面向对象方法实现橱窗式图面预览以及放大功能

     效果图: HTML结构如下: <div id="preview"> <div id="mediumDiv"> <img id=& ...

  5. AKOJ-2021-逆序对(归并,二分)

    链接:https://oj.ahstu.cc/JudgeOnline/problem.php?id=2021 题意: 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们 ...

  6. bzoj 4597||洛谷P4340 [Shoi2016]随机序列

    https://www.lydsy.com/JudgeOnline/problem.php?id=4597 https://www.luogu.org/problemnew/show/P4340 妄图 ...

  7. Elasticsearch之安装

    elasticsearch需要java8以上支持 java -version 二进制文件下载 www.elastic.co/downloads tar安装示例 1.下载tar文件 curl -L -O ...

  8. Django 使用allauth报错

    一:报错 RuntimeError: Model class django.contrib.sites.models.Site doesn't declare an explicit app_labe ...

  9. SpringBoot 2.x (12):整合Elasticsearch

    Elasticsearch:一个优秀的搜索引擎框架 搜索方面最基本的是SQL的like语句 进一步的有Lucene框架 后来有企业级的Solr框架 而Elasticsearch框架尤其适合于数据量特别 ...

  10. 洛谷 P1902 刺杀大使

    刺杀大使 一道并不难的二分题,竟让我交了上20次,诶,果然还是我太弱了. 看完题目就基本想到要怎么做了: 只需要对最小伤害代价进行二分即可,check()函数里用搜索判断是否可以到达最后一行,这里的c ...