- 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号