2014-04-18 7 views
0

내 의도는 내 워크 플로에서 컴파일 프로세스를 자동화하는 것입니다. 하나의 루트 디렉토리에 Makefile이 있으며 결과를 보려면 make을 입력하고 새로 고치려면 SIGTERM을 입력하십시오. (OS X 10.8.5를 실행 중입니다). 이상적으로, bash 스크립트는 파일의 변경 사항을 청취하고 작성시 automake를 실행 한 다음 실행 파일을 실행합니다.새 터미널에서 실행 파일을 여는 Bash 스크립트

다음과 같이 bash 스크립트를 구현하려고했습니다.

#!/bin/bash 

while true 
do 
    ATIME=`stat library/grid.c | egrep -o -m 3 '"(.{20})"' | tail +4` 

    if [[ "$ATIME" != "$LTIME" ]] 
    then 
     echo "Running make..." 
     bash -e make; ./sheet 
     LTIME=$ATIME 
    fi 
    sleep 1 
done 

이 다음과 같은 오류

/usr/bin/make: /usr/bin/make: cannot execute binary file 
./listener.sh: line 10: ./sheet: No such file or directory 

결과 어떻게하고 새로운 터미널 창에서 실행 파일을 실행하도록 명령을 실행합니까? 이 점은 필자의 bash 스크립트를 계속 실행하면서 백그라운드에서 변경 사항을 수신 할 수 있다는 점입니다.

답변

1

make가 아니라 모든 명령에 bash -e <cmd>을 실행하는 것은 합법적이지 않습니다. bash에 제공된 인수는 쉘 스크립트이 아니며 프로그램이 아니다.

왜 그런 쉘을 사용하려고하는지 알 수 없습니다. make을 (를) 직접 실행하는 이유는 무엇입니까? 그러나 실제로 bash에서 make을 실행하려면 -c 플래그를 사용해야합니다.

는 make가 실패 할 경우 스크립트를 중지 할 일은 원하는 경우, 사용

make || exit 1 
./sheet 

이 명령을 오류 후 계속 있지만 실행되지 싶은 경우에, 사용

make && ./sheet 
+1

나는 그가 그의 쉘과 터미널이 똑같지 않다는 것을 깨닫지 못하는 새로운 터미널 윈도우를 얻기 위해 그것을 사용하려고 노력했다고 생각한다. –

관련 문제