텍스트 파일의 고유한 내용을 동일하게 등록되지 않은 예상 문자열과 비교합니다.

텍스트 파일의 고유한 내용을 동일하게 등록되지 않은 예상 문자열과 비교합니다.

어떤 ".err" 텍스트 파일이 비어 있는지 확인하기 위해 쉘 스크립트를 작성했습니다. 일부 파일에는 다음 예제 파일과 같이 특정 반복 문구가 있습니다 fake_error.err(의도적으로 사용된 빈 줄).


WARNING: reaching max number of iterations

WARNING: reaching max number of iterations

WARNING: reaching max number of iterations

WARNING: reaching max number of iterations

WARNING: reaching max number of iterations

WARNING: reaching max number of iterations

WARNING: reaching max number of iterations

WARNING: reaching max number of iterations

WARNING: reaching max number of iterations

빈 파일 외에 삭제하고 싶습니다. 이를 위해 다음 스크립트를 작성했습니다.

#!/bin/bash

for file in *error.err; do
    if [ ! -s $file ]
    then
        echo "$file is empty"
        rm $file
    else
        # Get the unique, non-blank lines in the file, sorted and ignoring blank space
        lines=$(grep -v "^$" "$file" | sort -bu "$file")
        echo $lines

        EXPECTED="WARNING: reaching max number of iterations"
        echo $EXPECTED

        if [ "$lines" = "$EXPECTED" ]
        then
            # Remove the file that only has iteration warnings
            echo "Found reached max iterations!"
            rm $file
        fi

    fi
done

그러나 파일에서 실행될 때 이 스크립트의 출력은 다음 fake_error.err과 같습니다.

WARNING: reaching max number of iterations
WARNING: reaching max number of iterations

루프의 두 문에서 실행 $echo되지만 파일 자체는 삭제되지 않고 "Found reached max iterations!"문자열도 인쇄되지 않습니다. 문제는 if [ "$lines" = "$EXPECTED" ]이중 괄호를 사용해 보았지만 작동하지 않는다는 것입니다 [[ ]]. ==나는 이 두 가지 인쇄된 진술의 차이점이 무엇인지 모르겠습니다.

두 변수가 동일하지 않은 이유는 무엇입니까?

관련 정보