2014-04-24 2 views
2

두 조건을 확인하고 싶습니다. 그 안에 오류 문자열 "ORA-"가있을 수있는 파일이 있습니다. 먼저 파일이 존재하는지 그리고/또는 생성되었는지 확인하고, 존재하는 파일에 해당 오류 문자열이 있으면 두 번째를 확인하고 싶습니다. 그렇다면 다음 단계를 진행하지 마십시오. 그것이없는 경우에는 계속하십시오. grep을 사용하여 문자열을 확인하지만 올바른 파일 테스트를 사용하고 있는지 확실하지 않습니다. 이것을 확인하는 좋은 방법은 무엇입니까?유닉스 파일 테스트 운영자가 다른 테스트에 grep 사용

TESTFILE=/tmp/usethisfile.sql 
CHK_ERR= `grep "ORA-" $TESTFILE`; 

if [ -e "$TESTFILE" ] && [ -z "$CHK_ERR" ]; 
then 
    #run next step 
else 
    echo "Error found" 
    exit 1 
fi 
+0

이 파일이 존재하지 않는 그것이 존재하지만, "ORA-"를 일치하지 구별 할 필요가없는 경우, 당신은'-e' 테스트를 건너 뛸 수 있습니다 'grep'은 파일을 열 수 없을 때 실패합니다. – chepner

+0

당신은 $ CHK_ERR이 종료되면 종료하고, 다음 단계를 종료합니까? – jdamae

+1

예, anubhava의 답변과 비슷하지만'[-e "$ TESTFILE"] &&'가 제거되었습니다. – chepner

답변

3

당신은 할 수 있습니다 :

TESTFILE=/tmp/usethisfile.sql 

if [ -e "$TESTFILE" ] && grep -q "ORA-" "$TESTFILE" 
then 
    #run next step 
else 
    echo "Error found" 
    exit 1 
fi 
+0

좋습니다. 이 작품. 고마워. – jdamae

+0

환영합니다. 다행입니다. – anubhava

관련 문제