세 개의 파일에 대한 cmp 명령

세 개의 파일에 대한 cmp 명령

bash에서 cmp 명령을 사용하여 세 개의 텍스트 파일을 비교하고 file1이 file2와 다르지만 file1과 file3이 정확히 동일한 경우 작업을 수행하고 싶습니다. 도움말 파일에 따르면 파일이 동일하면 cmp는 0을 출력하고 파일이 다르면 cmp는 1을 출력합니다.

if [ "cmp -s file1.txt file2.txt" != 0 ] && [ "cmp -s file1.txt file3.txt" == 0 ]; then
#Action
else
#Do nothing
fi

그러나 조건의 일부는 if [ "cmp -s file1.txt file2.txt" != 0 ]단일 if 조건으로도 사용할 수 없으며 두 번째 조건도 사용할 수 없습니다. 두 파일이 동일하거나 다른 경우 동일한 방식으로 동작하기 때문입니다. 내가 뭘 잘못했나요?

답변1

리터럴 텍스트를 string 과 cmp -s file1.txt file2.txt비교하고 0있으며 문자열은 절대 일치하지 않습니다. 대신 이것을 사용하세요.

if ! cmp -s file1.txt file2.txt && cmp -s file1.txt file3.txt
then
    #Action
fi

관련 정보