SHELL SCRIPT 에러 확인
아래 형식의 SCRIPT 를 만드는데
에러가 나는 부분을 못찾겠습니다.
#!/bin/sh
#*
#****************EXPORT DATE******************************************
TODAY=`date +%Y%m%d`
TODAY_TIME=`date +%H`
YESTERDAY=`TZ=GMT+24 date +%Y%m%d`
HOST=`hostname`
#*********************************************************************
#*
#****************EXPORT DIR*******************************************
export HOME_DIR=/TEST_DIR/
export DATA_DIR=$HOME_DIR/DATA
export SEND_DIR=$HOME_DIR/SEND
#*********************************************************************
#*
#****************EXPORT CYCLE*****************************************
#1시간 주기로 전송 하므로 처음 전송은 01시, 마지막 전송은 익일 00시
#*********************************************************************
echo "START"
#***DATA DIR 로 이동
cd $DATA_DIR
#*** 일별로 1번째 실행 SCRIPT 인지 확인 후 전일자 처리
if [ $TODAY_TIME -eq 00 ]; 
then
		ls -rtl ${YESTERDAY}deviceStat*.log | awk '{printf "%s\n",$9}' > $SEND_DIR/temp2.txt		
    #***temp1.txt,temp2.txt 를 비교하여 읽을 파일이 있는 지 확인
		if diff -q $SEND_DIR/temp1.txt $SEND_DIR/temp2.txt &>/dev/null; then
      	echo "SAME FILE"
		else
		    #***SEQ 는 SCRIPT 가 실행된 시간 이지만 00시는 24로함
    		SEQ=24
    		#***temp1.txt,temp2.txt 를 비교하여 전일자 마지막 전송 파일을 찾음
    		fgrep -vf $SEND_DIR/temp1.txt $SEND_DIR/temp2.txt >> $SEND_DIR/diff.txt
    		#***파일리스트를 읽어서 색인  
    		LIST_FILE=`cat $SEND_DIR/diff.txt`
    		for LIST in $LIST_FILE
    		do
    		cat $DATA_DIR/$LIST | grep -E "aa|ab" >> SEND_DIR/$HOSTNAME_$YESTERDAY_REST_LOG_$SEQ.log
    		done
    		#***temp1 목록 갱신 후 기록을 위해 파일명 변경   
    		cat $SEND_DIR/diff.txt >> $SEND_DIR/temp1.txt
    		mv $HOME_DIR/temp1.txt $SEND_DIR/$HOSTNAME_$YESTERDAY_REST_HIST.log
    		#***전송한 파일 백업   
    		cd $SEND_DIR
    		mkdir ${YESTERDAY}
    		mv $SEND_DIR/$HOSTNAME_$YESTERDAY_REST* $SEND_DIR/${YESTERDAY}/
    fi
else
    #***TODAY 처음 전송이므로 temp1.txt 에 LIST 작성
		if [ $TODAY_TIME -eq 01 ]; 
		then
		    #***ls 시 마지막 파일은 제외하고 LIST 작성
		    FC=`ls -rtl ${TODAY}deviceStat*.log | wc | awk '{printf "%d\n",$1}'`
		    RFC=`expr $FC - 1`
		 		ls -rtl ${TODAY}deviceStat*.log | head -n${RFC} | awk '{printf "%s\n",$9}' > $SEND_DIR/temp1.txt
     		#***SEQ 는 SCRIPT 가 실행된 시간
     				SEQ=$TODAY_TIME
    		#***파일리스트를 읽어서 색인  
    		LIST_FILE=`cat $SEND_DIR/temp1.txt`
    		for LIST in $LIST_FILE
    		do
    		 		cat $DATA_DIR/$LIST | grep -E "aa|ab" >> SEND_DIR/$HOSTNAME_$YESTERDAY_REST_LOG_$SEQ.log
    		done
    else 
      	#***ls 시 마지막 파일은 제외하고 LIST 작성
				FC=`ls -rtl ${TODAY}deviceStat*.log | wc | awk '{printf "%d\n",$1}'`
		  	RFC=`expr $FC - 1`
				ls -rtl ${TODAY}deviceStat*.log | head -n${RFC} | awk '{printf "%s\n",$9}' > $SEND_DIR/temp2.txt
				#***temp1.txt,temp2.txt 를 비교하여 이전 마지막 전송 파일을 찾음
				if diff -q $SEND_DIR/temp1.txt $SEND_DIR/temp2.txt &>/dev/null; then
      			echo "SAME FILE"
				else				
      			fgrep -vf $SEND_DIR/temp1.txt $SEND_DIR/temp2.txt >> $SEND_DIR/diff.txt
      			#***SEQ 는 SCRIPT 가 실행된 시간
						SEQ=$TODAY_TIME`
						#***파일리스트를 읽어서 색인  
    				LIST_FILE=`cat $SEND_DIR/diff.txt`
    				for LIST in $LIST_FILE
    				do
    				cat $DATA_DIR/$LIST | grep -E "aa|ab" >> SEND_DIR/$HOSTNAME_$YESTERDAY_REST_LOG_$SEQ.log
    				done
    				#***temp1 목록 갱신
    				cat $SEND_DIR/diff.txt >> $SEND_DIR/temp1.txt
    		fi
    fi
fi
echo "END"
exit 0


요거 같은데요
#***SEQ 는 SCRIPT 가 실행된 시간
SEQ=`$TODAY_TIME`
SEQ=$TODAY_TIME ` <- 요거 표시
SEQ=$TODAY_TIME
` <- 요거 표시 안지움 ㅠㅠ
댓글 달기