2012-12-07 2 views
1

오늘은이 시도하고 작동하지 않는 것을 발견 다소 놀랐다 :는 "하위 명령"에 그룹화 사용하는 방법이하위 명령문 문을 그룹화 하시겠습니까?

$ nice -n 10 { ./configure && make ; } 
-bash: syntax error near unexpected token `}' 

있습니까?

+0

어쨌든 중괄호는 여기에 가짜이므로 이미 실행중인 쉘을 멋지지 않게 할 수 있습니다. (당신은 물론 자신을 'renice'할 수 있지만 현재 shell의 모든 것에 영향을 미친다.) 즉, nice는 새로운 프로세스에 영향을 미치고, 당신은 새로운 프로세스를 시작하지 않으려 고 시도하고있다. – tripleee

답변

1

셸 구문을 프로그램의 argv에 전달하고 이해할 것으로 기대할 수 없습니다. 특히 표시되는 오류는 &&;으로, 명령을 구분하는 "목록 연산자"입니다. 강타는 nice로에 인수를 평가하기 위해 노력하고있다 :

nice '-n' '10' '{' './configure' 

배쉬는 다음 && (make) 후 다음 명령을 평가하려고, 다음 } 다음 명령이다. 기술적으로 중괄호는 "예약어"와 "제어 운영자"입니다. 다른 포탄은 벌거 벗은 괄호를 조금 다르게 취급하지만 그게 비밀스러운 세부 사항입니다. 요점은 구문 분석 오류 (여기와 같은)이거나 "}"(일반적으로 이전)이라는 명령을 찾을 수 없기 때문에 발생하는 오류입니다 (일반적으로 이전.

예외). 예를 들어, Bash coproc 키워드는 다음과 같이 작동합니다.

2

시도해 보셨습니까? =)

nice -n10 bash -c './configure && make' 
관련 문제