2010-03-30 8 views
0

여러분, 저는 git bisect run과 같은 자식 도구를 사용하고 있습니다.이 도구는 프로젝트를 빌드하고 테스트하기 위해 명령을 호출해야합니다. 내 명령은 Windows 프로그램 인 nant입니다. 또는 nant를 호출하는 build.cmd 스크립트.출력이있는 bash에서 windows 명령을 표준 출력으로 실행 하시겠습니까?

bash가 nant 빌드를 실행하도록 호출하는 것은 쉽습니다.

하지만 표준 출력을 파일에 기록하는 방법은 어렵습니다.

심지어 Windows PowerShell을 설치하여 bash에서 명령을 실행 해 보았습니다.

다시 작동하지만 기본 출력 채우기는 빌드가 진행되는 동안 을 읽으려고하면 "permission denied"라고 표시됩니다.

업데이트 :

nant를 실행하면 전체 경로가 사용됩니다. 설치되어 잘 실행됩니다. 문제는 bash에서 실행할 때 표준 출력을 얻는 방법입니다.

줄 끝에서 "> build.out"으로 Windows 프롬프트에서 실행중인 경우 표준을 가져옵니다. 그러나 bash에서는 동일하게 작동하지 않습니다. 단지 build.out이 잠겨져 권한이 거부되었다고합니다.

업데이트 : 문제가 해결되지도 이하로 제안 티를 사용

. 이 경우 빌드가 실행되는 동안 파일을 읽으려는 시도로 파일에 "액세스가 거부되었습니다"라는 메시지가 계속 표시됩니다. 그러나 티 프로그램은 표준 출력에 아무 것도 쓰지 않습니다.

+0

erm ... bash는 유닉스 (esc) 쉘입니다 ... 'nant'를 윈도우에 설치하지 않으면 명령을 실행할 수 있습니다. 또한 nant를 등록하여 어디서나 호출 할 수있게하거나 디렉토리로 이동 한 다음 명령을 호출해야합니다. – thecoshman

+0

감사합니다. 귀하의 질문에 답변 해 드렸습니다. Nant가 설치되어 있으며 nant의 정규화 된 경로를 사용합니다. 문제는 표준 출력을 파일로 가져오고 파일에서 tail -f를 얻는 방법과 관련이 있습니다. – Wayne

답변

0

좋아요, 마침내이 문제가 해결되었습니다. 그것은 nant 빌드 스크립트가 git 기능을 사용하여 모든 무시 된 파일을 지우는 것으로 밝혀졌습니다. 그것은 build.out 파일을 삭제하는 것이 이러한 이상한 문제를 일으킬 수 있습니다. 이제 프로세스는 build.out 파일을 상위 디렉토리에 기록하여 삭제되지 않도록하고 모든 것이 예상대로 원활하게 작동합니다.

1

당신은 아마 파일과 표준 출력 모두에 출력을 분할하는 '티'명령을 사용할 수 있습니다 (I 제대로 질문을 ... 이해하고있는 경우). 줄 echo I am building something | tee build.out은 출력을 콘솔에 출력하고 "build.out"파일에 저장합니다.

tee 명령은 보통 Cygwin에서 사용할 수 있으며 분명히 msysgit (내가 방금 테스트 한 곳)에 설치된 Bash 셸에서도 사용할 수 있습니다. 자세한 내용은 good reference page입니다.

+0

답장을 보내 주셔서 감사합니다. 설명 된대로 티를 사용하면 동일한 문제와 추가 문제가 발생합니다. 그 파일은 여전히 ​​에디터 나 테일, less, head, cat 등으로 열려고하면 "액세스가 거부되었습니다"라는 오류가 발생합니다. 또한, 이상하게도 tee 프로그램은 표준에 아무 것도 쓰지 않습니다. 조용해. 그러나 파일 크기가 커지고 있습니다. 무슨 일이 일어나고 있는지 "모니터"하는 것은 여전히 ​​간단하지 않습니다. – Wayne

관련 문제