【Shell】批量创建日期文件夹

#!/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}个文件夹全部创建********************"
 

你可能感兴趣的:(shell)