2013-08-16 3 views
0

나는 스크립트의 목적이 foo로 시작하는 모든 파일을 찾고 오래된 3 일간 정렬하지 않고 목록 파일의 파일 목록과 비교하는 것이 목적이다. 누락 된 파일 만 리포팅 할 수 있습니다. 내 스크립트의 문제는 누락 된 파일을 고려하지 않는다는 것입니다 (예 : ) list라는 파일에 foo1, foo2, foo3, foo4, foo5가 포함되어 있지만 하나의 파일 파일이 누락 된 경우 문자열 비교가 꺼져 있습니다. 즉, 파일 foo4 스크립트가 실행됩니다 foo5을 누락 된 경우하는 의미bash 스크립트의 문자열 비교 문제

enter 

#!/bin/bash 
Set –x 
Find ~/test99 –name “foo*” –mtime -3 –print>report 
Sort report –o report; 
Cat report|cut -c 22-25>report1; 
while read comp1<&3 && read comp2<&4 
do 
    if [[ $comp1 = $comp2 ]]; then 
    echo "file not found" >/dev/null 
else 
    echo "$comp1 not found" 
fi 
done 3<report1 4<list 
+1

비교에서 'comp2' 변수 앞에 달러 기호를 잊어 버렸습니다. if [[$ comp1 == "$ comp2"]]; then – user000001

답변

1

당신이 목록

또는 fgrep -vf report list을 사용할 수를 비교 diff을 사용할 수 있습니다 만드는

희망 foo4 비교 될 것이다 목록과 보고서의 차이점을 얻으려면

+0

diff를 사용하여 "list"라는 파일에서 입력 한 다음 find를 사용하여 파일 목록을 검색하고 그 결과를 파일로 출력함으로써 파일 목록이 존재하는지 테스트 할 것을 제안합니다. 이 보고서를 호출하여 출력을 목록 파일과 비교합니다. – Jon

+0

더 명확하게 질문을 명확히 할 수 있다면 더 나은 답변을 제공하는 데 크게 도움이 될 것입니다 .... 나는 당신이'list'와'report'의 차이점을 얻고 싶다고 생각합니다. –

+0

좋아, 지금 당신이 말하는 것을 이해합니다. 나는 fgrep -vf를 사용하여 효과가있는 차이를 얻고있다. 그러나 나는 단지 그것이 어떤 파일이 빠져 있는지 에코하기를 원한다. \t 내 코드는 다음과 같습니다. 테스트는 정상적으로 작동하지만 내 논리가 잘못되었습니다. 나는 파일이 없을 때만 echo 할 것이다. 'Fgrep -vf report1 output' ''[[-s $ output]] then' 'Echo no file missing ' 'else' 'Echo'파일이있다. missing "' 'fi' – Jon