컴퓨터활용/유닉스

배치프로그램 실행 쉘 예제

멜번초이 2011. 4. 28. 16:33
####################################################################################################
## 업무               : XXX            (AA LEVEL 2기술)                                           ##
## SHELL PROGRAM ID   : XXXBV200                                                                  ##
## SHELL PROGRAM 명   :  일일거래내역 거래내역 대사 PGM                                           ##
## SHELL PROGRAM 유형 : BATCH          (기타 FTP, EAI, SORT, UNLOAD 등  Shell 프로그램 유형기술)  ##
## SHELL PROGRAM 설명 : 수수료거래내역을 금액을 집계하여 감사용 TABLE에 계정별,점별 INSERT        ##
##                                                                                                ##
##================================================================================================##
## 변 경 일자 : 변경자      : 변     경     내     역                                             ##
##------------------------------------------------------------------------------------------------##
## 2011-04-17 : 홍길동      : 신규 작성                                                           ##
##                                                                                                ##
##================================================================================================##
####################################################################################################

####################################################################################################
## 쉘 수행 아규먼트  ( Shell에 Input으로 들어오는 아규먼트 기술)                                  ##
####################################################################################################
##                                                                                                ##
## $1 : 처리일자 : 스케줄러에서 제공하는 Order Date YYYYMMDD                                      ##
##                                                                                                ##
####################################################################################################

if [ $# -lt 1 ]; then
    echo "인자개수는 2개가 입력 되어야 합니다.인자갯수 [$#] ";
    echo "첫번째인자:대상일자, 두번째인자:기능코드 ";
    echo "   ex) XXXBV200.sh 20110404 1 ";
    exit 100;
fi

# 입력한 일자가 8자리인지 체크
if  [ ${#1} -ne 8 ]
then
    echo "(E) 배치실행 입력값오류입니다. 입력된 [처리일자]가 8자리가 아닙니다.[$1]" | tee -a $SHELLOG
    exit 1
fi


####################################################################################################
## 변수 설정  (Shell에 사용될 변수 설정영역)                                                      ##
####################################################################################################
## 기본 경로 정보                                                                                 ##
## $DATFILEDIR : 데이터파일 BASE 경로(/cbsdat)                                                    ##
## $FTPFILEDIR : FTP데이터파일 BASE 경로(/cbsftp)                                                 ##
## $BATDIR     : BATCH 실행프로그램 BASE 경로(/ncbs/batchapp)                                     ##
## $BATLOGDIR  : BATCH 로그 경로(/logs/ncbs/blog)                                                 ##
## $SHELLDIR   : SHELL 프로그램 경로(/ncbs/batchapp/shell)                                        ##
## $SHELLLOGDIR: SHELL 프로그램 로그 경로(/logs/ncbs/blog)                                        ##
####################################################################################################
FDATE=`date "+%Y%m%d_%H:%M:%S"`
AALVL2="xxx"
BATPGMID="XXXBV200"
SHELLOGDIR=${BATLOGDIR}
SHELLOG="$SHELLOGDIR/$AALVL2/${BATPGMID}_${FDATE}.shlog"


####################################################################################################
## SHELL 프로그램 시작                                                                            ##
####################################################################################################
echo "===========================================================================" | tee -a $SHELLOG
echo " ${BATPGMID}.sh  배치쉘 실행 시작 [" ${FDATE} "]"  | tee -a $SHELLOG


####################################################################################################
##  배치 실행 일자 설정  (BSBFDATE : 배치 실행 일자 정보 산출 프로그램) - 수행안함                ##
####################################################################################################
##  BATBASEDATE=`BSBFDATE 기준일자 일자구분 일수 일수TYPE`                                        ##
##     기준일자  : $1으로 입력 받은 ODATE                                                         ##
##     일자구분  :  1: 영업일자, 2: 토요일포함 영업일자, 3: 시스템일자                            ##
##     일수      : +3,+2,+1,-1,-2, -3등                                                           ##
##     일수TYPE  :  10- 일, 20-주해당일, 21- 주초, 22: 주말 , 30: 월 해당일, 31- 월초, 32-월말    ##
##                                                                                                ##
####################################################################################################
## BATBASEDATE=`BSBFDATE $1 1  0  10`     ## $1 기준 토요일이   휴일일 경우의    당영업일 산출    ##
## BATBASEDATE=`BSBFDATE $1 2 +5  10`     ## $1 기준 토요일이 영업일일 경우의 5익일영업일 산출    ##
####################################################################################################

echo " 입력한 기준일자 : [$1]"   | tee -a $SHELLOG

echo "************************** ${BATPGMID}  START *******=*********************" | tee -a $SHELLOG

#이전 실행로그 삭제
#rm -rf ${BATLOGDIR}/${AALVL2}/${BATPGMID}*

# 프로그램 실행
${BATBIN}/${AALVL2}/${BATPGMID} $1 $2

#/ncbs/batchapp/sbin/xxx/XXXBV001 20101203


####################################################################################################
##  프로그램 종료                                                                                 ##
####################################################################################################
RESULT_CODE=$?
if [[ $RESULT_CODE = 0 ]] then
    echo  " `date` :  $BATPGMID  수행 결과 정상 종료 [ $RESULT_CODE ]"       | tee -a $SHELLOG
else
    echo  " `date` :  $BATPGMID  수행 결과 오류 발생 [ $RESULT_CODE ]"       | tee -a $SHELLOG
    exit 1
fi

FDATE=`date "+%Y%m%d_%H:%M:%S"`
echo " ${BATPGMID}  배치 프로그램 종료 [" ${FDATE} "]"  | tee -a $SHELLOG
echo "*********************** ${BATPGMID}   END *********************************" | tee -a $SHELLOG