2013-06-06 4 views
0

나는 'Hitting/Triggering'이되어야하는 두 가지 IF 문을 가지고 있지만, 내 코드에는 뭔가가 정교하지 않습니다. 나는 바스를 배우는 중이며 어떤 도움을 주셔서 감사합니다. 왜이 IF 문은 작동하지 않습니까?

나는
#Array of Dates 
DATES=($(awk -F'/' '{print $2}' "${TEMPFILE}")) 
#Array of IP's 
IPS=($(awk '{print $2}' "${TEMPFILE}")) 

그들은 같은 파일에서 생성되기 때문에

, 그들은 같은 길이, 코드에서 이전, 생성 된 두 개의 배열을 가지고있다. 두 배열의

예 :

내 나는 블루 코트의 로그를 분석하고 문 및 IF 문에서
01 06 07 08 11 23 24 
192.168.0.4 192.168.0.6 192.168.0.4 192.168.0.5 192.168.0.6 192.168.0.4 192.168.0.5 

이 IP는 DHCP 로그 분석에서 형성 배열 (에서 변경되었는지 확인합니다). IF 문이 트리거되지 않는다는 것을 제외하고 모든 것이 작동하는 것처럼 보입니다 (출력 결과보기). 따라서 IP는 절대로 변경되지 않습니다.

다음은 bash는 수학을하지 아무것도 주위를 두 번 (())이 필요합니다 (한 번에 일)을 한 달을 검색하기위한 내 코드

ARRAY_COUNTER=1 

NEW_GREP_TERM=${IPS[0]} 

for i in {01..31} 
do 
    SEARCHPATH=${BASEPATH}/${DEF_YEAR}${DEF_MONTH}/SG_OIG__22[8-9]${DEF_MONTH}${i}* 
    zgrep --no-filename $NEW_GREP_TERM $SEARCHPATH | awk -f /usr/local/bin/cvsit.awk >> $OUTFILE 

     if [[ "${i}" == "${DATES[$ARRAY_COUNTER]}" ]]; then 

      if [[ "${IPS[$ARRAY_COUNTER]}" != "${IPS[$ARRAY_COUNTER-1]}" ]]; then 
       echo -e "Change IP" 
       NEW_GREP_TERM=${IPS[$ARRAY_COUNTER]} 
       zgrep --no-filename $NEW_GREP_TERM $SEARCHPATH | awk -f /usr/local/bin/cvsit.awk >> $OUTFILE 

      fi 
     ARRAY_COUNTER++ 
     fi 
done 
+0

당신은 그래서 우리는 스크립트를 실행할 수 있습니다 입력의 샘플을 붙여 넣을 수 있습니다 :

그래서, 대신

ARRAY_COUNTER++ 

당신은

((ARRAY_COUNTER++)) 

여기에 전체 스크립트의 필요? [짧은, 자체 포함 된 올바른 예] (http://sscce.org/)를 참조하십시오. – choroba

+0

'날짜'에 예상 한 내용이 포함되어 있다고 가정하십시오. '내가'당신이 기대하는 것을 포함하고 있다고 주장하십시오. 입력, 관측 된 출력, 예상 출력. 관찰 된 문제를 표시하는 데 필요한 코드의 양을 최소화하십시오. 디버깅 101. – DevSolar

+1

('set -x'를 사용하여) 디버그 모드로 실행하고 그 값을보십시오. – unxnut

답변

1

입니다.

ARRAY_COUNTER=1 

NEW_GREP_TERM=${IPS[0]} 

for i in {01..31} 
do 
    SEARCHPATH=${BASEPATH}/${DEF_YEAR}${DEF_MONTH}/SG_OIG__22[8-9]${DEF_MONTH}${i}* 
    zgrep --no-filename $NEW_GREP_TERM $SEARCHPATH | awk -f /usr/local/bin/cvsit.awk >> $OUTFILE 

     if [[ "${i}" == "${DATES[$ARRAY_COUNTER]}" ]]; then 

      if [[ "${IPS[$ARRAY_COUNTER]}" != "${IPS[$ARRAY_COUNTER-1]}" ]]; then 
       echo -e "Change IP" 
       NEW_GREP_TERM=${IPS[$ARRAY_COUNTER]} 
       zgrep --no-filename $NEW_GREP_TERM $SEARCHPATH | awk -f /usr/local/bin/cvsit.awk >> $OUTFILE 

      fi 
     ((ARRAY_COUNTER++)) 
     fi 
done 
관련 문제