shell脚本

  • today = date +%Y-%m-%d
  • yesterday = date -d "1 day ago" +%Y-%m-%d
  • this_month = date +%Y-%m
  • one_year_ago = date -d "1 year ago" +%Y-%m-%d
  • 在shell脚本中,除了linux的命令外,其他的内容不要用反引号 ` 引起来,比如建表时候的库名、表名以及字段,否则会被识别为linux命令,导致任务报错
  • Linux 命令之 source

source 命令会在当前 Shell 环境中从指定文件读取和执行命令。source 命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。

source后的文件夹可以在shell脚本中引用它的变量,常用于存储账号密码,不暴露给看脚本的人

source /home/hdfs/statistics.cfg
beeline -n $hive_user -p $hive_pass -u $hive_url -e "$hql"
  • 导出hive表结构
#!/bin/bash
DATABASES='app_log bdw ck'
for DATABASE in ${DATABASES}
do
beeline -n shumouli -p nnwsml2202 -e "use ${DATABASE}; show tables;" > ${DATABASE}_tables.txt
sleep 1
cat ${DATABASE}_tables.txt | while read eachline
do
beeline -n shumouli -p nnwsml2202 -e "show create table ${eachline};" >> /tmp/${DATABASE}_tables.txt
done
done
  • shell循环小脚本
#!/bin/bash



#开始数量
min=3
#最大数量
max=11
while [ $max -ge $min ]
do
	max=$(($max-1))
	yestoday=`date -d "-$max day" +%Y-%m-%d`
	month=`date -d "-$max day" +%Y-%m`
	onemonth=`date -d "-$max day -1 month" +%Y-%m`
	
	echo $yestoday
	echo $month
	echo $onemonth
	echo ---------------------------- 



done
exit 0

输出:
在这里插入图片描述

  • 在shell脚本中控制程序执行日期
source /home/hdfs/statistics.cfg

if [ "${today:8:2}" -eq "02" ]; then
   beeline -n $hive_user -p $hive_pass -u $hive_url -e "$hql_2"
fi


exitCode=$?
if [ $exitCode -ne 0 ];then
         echo "[ERROR]云代账hive每月02号任务失败 failed!"
         exit $exitCode
fi

${today:8:2} -> 从第8位开始截取,截取两位 ,判断最后两位天数=02 则为每月02号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值