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