diff
두 파일을 비교 하고 아무것도 반환하지 않으면 echo "no diff"
차이점을 보여주고 싶습니다 . 현재 if 문은 차이가 없는 경우에만 작동하지만 차이가 있으면 "찾을 수 없음" 오류가 발생합니다.
test.sh는 다음과 같습니다.
#!/bin/zsh
if [$(diff file1 file2) = '']
then
echo "no diff"
else
diff file1 file2
fi
파일이 동일한 경우:
$ sh test.sh
no diff
파일이 다른 경우:
$ cat file1
hello
$ cat file2
goodbye
$ sh test.sh
test.sh: 1: test.sh: [1,8c1,8: not found
< hello
---
> goodbye
해결책을 검색하는 동안 공백 if [ $(diff
vs를 사용하는 if [$(diff
것이 차이가 있고 단일 =
vs를 사용하는 ==
것도 도움이 된다는 것을 알았습니다. 문제는 내가 출력을 테스트하고 있다는 것입니다 ''
(아무것도 아님). 작동하지만 "찾을 수 없음" 줄이 거기에 속하지 않습니다. 나는 그 짜증나는 줄을 제거하고 싶지 않고 if 문을 올바른 방식으로 수행합니다. 왜냐하면 두 번 실행하지 않고도 필요한 결과를 얻을 수 있는 방법이 있어야 하기 때문입니다 diff
.
답변1
diff
차이점이 발견되지 않으면 0 종료 상태를 제공하므로 diff
한 번만 사용하고 필요에 따라 메시지를 출력합니다.
if diff file1 file2; then
echo 'no diff'
fi
diff
유틸리티에는-s
/--report-identical-files
(POSIX 사양 확장) 옵션이 있을 수 있습니다. 이는 명령을 다음과 같이 단순화합니다.diff -s file1 file2
오류의 원인은
[1,8c1,8: not found
구문 오류입니다.[
유효한 표현식 및 종료 매개변수와 함께 단독으로 나타나야 합니다]
. 사용 방법에 대한 정보test
는 unix.stackexchange(협회 협회 협회) & 매뉴얼 페이지에서man 1 test
&man 1p test
- 에서
test.sh
첫 번째 줄은 이지만 그 다음에는 인터프리터를 사용하여#!/bin/zsh
스크립트가 실행됩니다 (아마도 아님 ). 이 기능을 사용하려면 실제로 스크립트를 실행하고 있는지 확인해야 합니다.sh
zsh
zsh
zsh