오류가 발생했습니다.
bash : 예기치 않은 토큰 근처의 구문 오류`; ‘
다음 명령으로 인해 :
evince foo.pdf bar.pdf &; emacs foo.tex &
백그라운드 작업 을 ;
할 때 명령을 분리하는 것이 불법 &
입니까? 아니면 이것이 작동하지 않는 또 다른 이유가 있습니까?
감사합니다.
답변
세미콜론이 필요하지 않습니다. 배경으로 보낸 후에는 다른 명령을 자유롭게받을 수 있습니다.
evince foo.pdf bar.pdf & emacs foo.tex &
답변
BTW의 핵심 문제는 (Bourne-derived) 쉘이 빈 명령을 허용하지 않는다는 것입니다.
“;” “&”는 명령 종결 자이며 각각 fg와 bg를 의미합니다. 그래서 “;;” (또는 줄의 시작 부분에 “;”)도 유효하지 않습니다.
(아직 종료되지 않은 명령이있는 경우 줄 바꾸기를 계속하기 위해 “\”를 사용하지 않는 한 줄 바꿈은 “;”을 의미합니다.)
언어는 다음 정책에 따라 크게 다릅니다.
C 파생 언어는 빈 문장을 허용합니다.
파스칼과 PERL에는 터미네이터가 아닌 세퍼레이터가 있습니다.
답변
아니요, 혼란스럽고 의미하는 바를 제대로 해결할 수 없습니다.
백그라운드에 넣고 자하는 명령으로 &를 그룹화해야합니다.
$ (evince foo.pdf bar.pdf &); emacs foo.tex &
잘 작동합니다. 더 명백한 것은 다음과 같습니다.
$ (evince foo.pdf bar.pdf &); (emacs foo.tex &)
특히 종료 후 더 많은 명령을 연결하려는 경우 특히 그렇습니다.