-bash: 예상치 못한 토큰 `;' 근처에서 구문 오류가 발생했습니다.

-bash: 예상치 못한 토큰 `;' 근처에서 구문 오류가 발생했습니다.

그렇다면 올바른 형식은 무엇입니까?
나는 많은 종류를 시험해 보았다.
프로그램이 아닌 경우에도 명령줄에서 형식이 작동해야 합니까?

$ if [1==2] then echo "y" fi;
> ;
-bash: syntax error near unexpected token `;'

답변1

아직 아무도 오류를 설명하지 않았습니다.

귀하는 다음을 입력했습니다:

if [1==2] then echo "y" fi;
;

첫 번째 줄은 쉘에 관한 한 완벽하게 유효한 구문이었습니다. 다음과 같은 형식입니다.

if cmd args

이 경우에는 glob cmd의 확장에서 파생됩니다 [1==2]. 이름이 또는 문자 로 [1==2]구성된 현재 디렉터리의 파일 목록으로 확장되는 글로빙 패턴입니다 .1=2

2예를 들어, 현재 디렉터리에 호출된 파일이 있으면 다음과 같습니다.

2이면 echo fi;

2, 4개의 인수 2( then, echo및 )를 사용하여 명령문 부분의 fi첫 번째 명령으로 명령을 실행합니다 .ifif/then/elif/else/fi

오류는 ;두 번째 줄의 두 번째에서 발생합니다. ;명령줄에 해당 내용만 입력해도 동일한 오류 메시지가 표시되었을 것입니다 . ;명령을 분리하는 데 사용해야 하며 단독으로 사용할 수는 없습니다.

답변2

bash if구성의 올바른 형식은 다음과 같습니다.

if something; then command; fi

당신이 시도하는 것의 올바른 형태는 다음과 같습니다

if [ 2 -eq 2 ]; then echo "y"; fi;

Bash에서는 공백이 중요합니다.

답변3

이거 한번 해봐:

if [ 1 == 2 ]; then echo "y" ; fi

-eq1과 2를 문자열로 비교하려는 경우가 아니면 을 사용하는 것이 좋습니다 .

유용한 링크:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

답변4

연산자 ==는 Bash에 존재하지 않습니다. -eq숫자를 비교할 때나 문자열을 비교할 때 입니다 =.

if [ 1 -eq 2 ]; then echo 'y'; fi

관련 정보