linux脚本时间变量调用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux脚本时间变量调用相关的知识,希望对你有一定的参考价值。
一个linux 6.3的日志服务器,每天都会从别的设备接收日志,格式为:ip-20160322.txt(日期是举例)。现在我想每天凌晨做一个crontab去tar昨天收集完成的日志,命名格式为:ip-20160322.tar.gz(日期是举例) 。然后现在我用 date -d'1 day ago' "+%Y%m%d" 去获取前一天的时间,怎么在脚本里用tar命令直接去调用这个获取前一天日期的命令去直接找到前一天的源文件,然后同样用同一天的日期去命名新打包的文件呢?忘高手赐教。
我在脚本里建了变量 TIME='date -d'1 day ago' "+%Y%m%d"' 然后用
tar -zcf ip-$TIME.tar.gz ip-$TIME.txt 去对原文件打包,但是总是报一堆错,好像变量定义的时候有问题,怎么回事呢?
解决了。
你的变量定义格式有误,变量调用系统命令时的格式:
TIME=$(date -d\'1 day ago\' "+%Y%m%d")或
TIME=`date -d\'1 day ago\' "+%Y%m%d"`
#推荐使用第一种方式,看起来比较直观也容易避免一些问题
完整的脚本如下:
在/root/目录下创建名为 tar_log.sh的sh文件
#!/bin/bashTIME=$(date -d\'1 day ago\' "+%Y%m%d")
logdir="#日志存放位置"
cd $logdir/
tar -zcf ip-$TIME.tar.gz ip-$TIME.txt
crontab 设置如下:
00 00 * * * /bin/bash /root/tar_log.sh 参考技术A riqi=`date '+%Y%m'`Linux/Unix shell sql 之间传递变量
灵活结合Linux/Unix Shell 与SQL 之间的变量传输,极大程度的提高了DBA的工作效率,本文针对Linux/Unix shell sql 之间传递变量给出几个简单的示例以供参考。
Linux/Unix 下调用SQL,RAMN 请参考:Linux/Unix shell 脚本中调用SQL,RMAN脚本
一、示例
- 1、shell变量接受sql返回值之方式一
- [email protected]:~> more ./retval.sh
- #!/bin/bash
- RETVAL=`sqlplus -silent scott/tiger <<EOF
- SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
- SELECT * FROM emp WHERE ename=‘SCOTT‘;
- EXIT;
- EOF`
- if [ -z "$RETVAL" ]; then
- echo "No rows returned from database"
- exit 0
- else
- echo $RETVAL
- fi
- [email protected]:~> chmod u+x retval.sh
- [email protected]:~> ./retval.sh
- 7788 SCOTT ANALYST 7566 19-APR-87 34171.88 20
- 2、shell变量接受sql返回值之方式二
- [email protected]:~> more ./retval_2.sh
- #!/bin/bash
- # Author : Robinson Cheng
- # Blog : http://blog.csdn.net/robinson_0612
- sqlplus -S "scott/tiger" <<EOF
- SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
- col cnt new_value v_cnt
- SELECT count(*) cnt FROM emp WHERE deptno=10;
- exit v_cnt
- EOF
- VALUE="$?"
- echo "show rows for deptno 10:$VALUE"
- 3、将shell变量作为参数传递给sql脚本
- [email protected]:~> more ./retval_3.sh
- #!/bin/bash
- v_empno="$1"
- sqlplus -S "scott/tiger" <<EOF
- SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFF
- SELECT ename FROM emp WHERE empno=$v_empno;
- exit
- EOF
- exit
- [email protected]:~> ./retval_3.sh 7788
- SCOTT
- 转:http://blog.csdn.net/leshami/article/details/7978179
以上是关于linux脚本时间变量调用的主要内容,如果未能解决你的问题,请参考以下文章