2013-06-19 3 views
1

파일의 하위 디렉토리에 대한 정보를 수집하는 scritp가 있습니다. 나는 파일 생성 사이의 시간이 일정하다는 것을 확인하고있다.while 루프에서 변수 가져 오기

last=0 
LOGCHECK="YES" 
ls -l /dir/*.log | gawk '{print $8}' | sed s/:/*60+/g | bc | 
     while read fname 
     do 
      current=$fname 
      if [ $last = 0 ]; then 
       last=$current 
      elif [ $((current - last)) -ne 1 ]; then 
       echo "Time difference discrepancy: $((current - last)) minute(s) is not expected" 
       LOGCHECK="NO" 
       last=$current  
      else 
       last=$current 
      fi  
     done 

.log 파일 생성 사이의 시간이 1 분이 아닌 경우에만 출력됩니다. 내 문제는 while 루프 내의 $ LOGCHECK가 파이프에서 믿는 다른 서브 쉘에 있다는 것입니다.

이 변수 정보를 얻는 방법이 있습니까?

답변

3

이것은 bash 스크립팅의 일반적인 상황입니다. 루프를 다음과 같이 다시 구성하십시오.

while read fname 
do 
    # stuff 
done < <(ls -l /dir/*.log | gawk '{print $8}' | sed s/:/*60+/g | bc) 

그런 다음 루프 내에 설정된 변수는 계속 사용할 수 있습니다.

관련 문제