쉘 스크립트 오류

쉘 스크립트 오류

오류를 발생시키는 작은 쉘 스크립트가 있습니다.

파일이 예기치 않게 종료되었습니다.

스크립트는 다음과 같습니다.

#!
if [  t -eq  1  ]
then
 echo " TEST1 "
else
echo " TEST LAST LOOP "
fi

답변1

스크립트에는 해당 오류가 발생하는 항목이 없습니다. 다음을 sh ./script.sh사용하여 스크립트를 실행하면

 TEST LAST LOOP 

출력으로. Condition ) 하는bash ./script.sh실행t으로 경우 . 를 사용하여 실행하면 올바른 - 줄을 추가하지 않았기 때문에 쉘에서 "해당 파일이나 디렉터리가 없습니다"라는 메시지가 표시될 가능성이 높습니다 . shshbash./script.sh#!

이 스크립트에서는 표준 POSIX 기능만 사용하므로 #!/bin/sh-line을 사용할 수 있습니다 .#!

(char)가 정수가 아니기 [ t -eq 1 ]때문에 테스트가 유지되지 않습니다. t설정 중이라면바꾸다 t[ "$t" -eq 1 ]테스트에 사용할 어딘가의 정수입니다 .


쉘에서 "예기치 않은 파일 끝"이라는 메시지를 표시할 수 있는 유일한 방법은 스크립트를 DOS 텍스트 파일로 변환하고 bash.

이 오류가 발생하면 스크립트 파일은 DOS 텍스트 파일일 수 있습니다(Windows 컴퓨터에서 생성되었을 수 있음). dos2unix스크립트를 실행해야 합니다 .

바라보다관련 질문dos2unix.

답변2

shebang 줄이 누락되어 #!/bin/sh정의 t되지 않았습니다 .

답변3

  • #!로 대체되거나 #!/bin/sh실행 sh ./script.sh되며 t는 정수가 $t아닌 으로 설정되어야 합니다 t.

관련 정보