그렇다면 올바른 형식은 무엇입니까?
나는 많은 종류를 시험해 보았다.
프로그램이 아닌 경우에도 명령줄에서 형식이 작동해야 합니까?
$ 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
첫 번째 명령으로 명령을 실행합니다 .if
if/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
-eq
1과 2를 문자열로 비교하려는 경우가 아니면 을 사용하는 것이 좋습니다 .
유용한 링크:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html
답변4
연산자 ==
는 Bash에 존재하지 않습니다. -eq
숫자를 비교할 때나 문자열을 비교할 때 입니다 =
.
if [ 1 -eq 2 ]; then echo 'y'; fi