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
` <- 요거 표시 안지움 ㅠㅠ
댓글 달기