-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이면 fi를 반환합니다.

즉, 명령문 섹션의 첫 번째 명령 으로 , 및 의 4 2개 매개변수를 사용하여 명령을 실행하십시오.2thenechofiifif/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

관련 정보