그렇다면 올바른 형식은 무엇입니까?
나는 많은 종류를 시험해 보았습니다.
이 형식은 프로그램이 아닌 명령줄에서도 작동해야 합니까?
$ 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
개 매개변수를 사용하여 명령을 실행하십시오.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