입력 후;ls
그 대가로 이걸 받았어요 -bash: syntax error near unexpected token `;'
어떻게 해결할 수 있나요?
답변1
세미콜론은 명령을 종료합니다. 개행 문자는 괜찮기 때문에 일반적으로 필요하지 않습니다. 하지만 다음을 사용하면 한 줄에 여러 명령을 넣을 수 있습니다.
$ echo -n "hi "; echo there
hi there
아니면 더 유용할 수도 있습니다:
if [ whatever ]; then
줄 시작 부분에 세미콜론을 넣으면 그 앞에 "빈" 명령이 남게 되는데, 이는 분명히 쉘 구문에서 금지되는 것입니다. Yash는 유용한 오류 메시지를 제공합니다.
$ yash -c '; echo hi'
yash -c:1: syntax error: a command is missing before ‘;’
Ksh와 Zsh는 문제를 무시하는 것 같습니다.
$ zsh -c '; echo hi'
hi
(그러나 is는 와 다르고 like 는 . 과 다르기 echo foo;;
때문에 이들에서도 사용할 수 없습니다 . 는 명령문에 사용됩니다 .);;
;
>
>>
;;
case
빈 명령은 아무 작업도 수행하지 않으므로 선행 세미콜론을 생략할 수 있습니다. 아니면 Zsh로 전환하는 것이 좋을 것 같습니다.
답변2
다음 구문 오류와 동일합니다.
$ ;
bash: syntax error near unexpected token `;'
이는 cmd
단지종료 ;
:
$ ls ;
이 경우에는 ;
다음과 같이 정의된 메타 문자입니다.
메타문자
인용되지 않은 경우 단어를 구분하는 데 사용되는 문자입니다.
;
복합 명령 과 동일하지 않습니다 .
if list; then list; else list; fi
이 경우 이는 명령 구문의 일부입니다.