터미널에서 코드를 실행할 수 있지만 동일한 명령을 쉘 스크립트에서 실행할 때 오류가 발생합니다.

터미널에서 코드를 실행할 수 있지만 동일한 명령을 쉘 스크립트에서 실행할 때 오류가 발생합니다.

저는 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

관련 정보