이 스크립트에서 "예기치 않은 파일 끝" 구문 오류가 발생하는 이유는 무엇입니까?

이 스크립트에서 "예기치 않은 파일 끝" 구문 오류가 발생하는 이유는 무엇입니까?

이 스크립트의 마지막 줄에 "예기치 않은 파일 끝" 구문 오류가 발생하는 이유는 무엇입니까?

{ [ $# -ne 2 ] && [ $# -ne 3 ] } && { echo "Uso: $0 [opciones] [nlineasresultado] [archivos a analizar]" && echo "NEED 2 OR 3 PARAMETERS" && exit 1 }
echo sucessfull
exit 0

답변1

bash중괄호( , )를 사용할 때의 구문을 보여주는 매뉴얼 페이지를 참조하세요 .{}

{ list; }

이는 여러 세미콜론이 누락되었음을 의미합니다.

{ [ $# -ne 2 ] && [ $# -ne 3 ]; } && { echo "Uso: $0 [opciones] [nlineasresultado] [archivos a analizar]" && echo "NEED 2 OR 3 PARAMETERS" && exit 1; }

동일한 목적을 달성하기 위해 개행 문자를 사용할 수도 있습니다. 즉, 이것은 버그입니다.

{ echo hello }

하지만 이것은 작동합니다:

{ echo hello; }

이와 같이:

{
echo hello
}

답변2

bash명령 그룹화에는 닫는 중괄호 앞에 하나가 필요합니다. {}왜냐하면 닫는 중괄호를 넣지 않았기 때문에 오류가 발생하기 때문입니다.;}

하다:

{ [ $# -ne 2 ] && [ $# -ne 3 ] ;} && { echo "Uso: $0 [opciones] [nlineasresultado] \
          [archivos a analizar]" && echo "NEED 2 OR 3 PARAMETERS" && exit 1 ;}

관련 정보