#!/bin/bash
#############################################################################
#批量创建日期文件夹
#调用方法:sh createdatedir.sh ip port username password srcname begndt overdt
#例:sh createdatedir.sh 10.11.44.28 22 saedw Oneb@nk123 EXT 20190401 20190404
##############################################################################
ip=$1
port=$2
username=$3
password=$4
srcname=$5
begndt=$6
overdt=$7
log_path=/data/script/edw/etlpath/log/
if [ ! -d ${log_path} ]; then
mkdir -p ${log_path}
fi
shlog()
{
local line_no msg
line_no=$1
msg=$2
echo "[createdatedir.sh][$line_no]["`date "+%Y%m%d %H:%M:%S"`"] $msg ">> ${log_path}createdatedir_${etl_date}.log
echo -e "\033[31;40;1m[createdatedir.sh][$line_no]["`date "+%Y%m%d %H:%M:%S"`"] $msg \033[39;49;0m"
}
judge()
{
local line_no code tablename
line_no=$1
code=$2
tablename=$3
if [ $code -ne 0 ]; then
shlog ${line_no} ${tablename}"失败!!!"
exit 1
else
shlog ${line_no} ${tablename}"成功..."
fi
}
#将输入的日期转为时间戳格式
begndate=`date -d "${begndt}" +%s`
overdate=`date -d "${overdt} 1 day" +%s`
#计算两个时间戳的差值除于每天86400s即为天数差
stampDiff=`expr $overdate - $begndate`
dayDiff=`expr $stampDiff / 86400`
shlog $LINENO "********************共需要创建${begndt}-${overdt}号共${dayDiff}个文件夹,是否确认?********************"
sleep 5
cd /data/${srcname}
#根据天数差循环输出日期
for((i=0;i<$dayDiff;i++))
do
etl_date=`date -d "${begndt} $i day" +'%Y%m%d'`
if [ ! -d "${etl_date}" ]; then
shlog $LINENO "${etl_date}文件夹已创建"
mkdir ${etl_date}
else
echo "${etl_date}文件夹已存在"
fi
chown -R ${username}:dp_app ${etl_date}
chmod -R 747 ${etl_date}
done
shlog $LINENO "********************${srcname}目录下${begndt}-${overdt}号共${dayDiff}个文件夹全部创建********************"