저는 Unix와 쉘 스크립팅을 처음 접했고 터미널에서 코드를 실행할 수 있지만 쉘 스크립트에서 실행할 때 동일한 명령을 실행하면 오류가 발생합니다.
#!/bin/bash
diff <((sort doc1) <(sort doc2)) | grep -x '.\{6\}' >sample.txt
쉘을 실행하면 다음 오류가 발생합니다.
/App$ sh filediff.sh
filediff.sh: 4: filediff.sh: Syntax error: "(" unexpected
답변1
일반 쉘에서 diff 명령을 실행하면 현재 쉘(주로 bash)을 사용하게 됩니다.
스크립트에 bash 쉘을 사용하려고 하지만 "shfilediff.sh"를 사용하여 스크립트를 호출하면 bash와 약간 다른 sh-Shell을 호출하게 됩니다.
다음을 사용하여 스크립트를 호출할 수 있습니다.
bash filediff.sh
아니면 실행 가능하게 만드세요
chmod +x filediff.sh
그리고 전화해
./filediff.sh
답변2
diff 명령은 두 파일을 분석하고 다른 줄을 인쇄하는 데 사용됩니다. diff 명령에 올바른 입력 파일을 제공하지 않았습니다.
간단하게 수정된 작업 스크립트는 다음과 같습니다.
sort doc1 | tee tempdoc1
sort doc2 | tee tempdoc2
diff tempdoc1 tempdoc2 | grep -x '.\{6\}' > sample.txt
echo "Following is difference:"
cat sample.txt