2012-08-23 3 views
2

다른 하위 프로젝트 디렉토리를 반복하여 실행하는 bash 스크립트가있어서 대상으로 만듭니다.makefile에서 시스템 변수를 스크립트에서 실행할 수 있습니까?

각각의 메이크 파일은 고유 한 변수를 가질 수 있습니다. makefile과 함께 할당 된 $ (MY_FILTERS). 그래서 그것은 makefile의 내부 변수입니다.

내가 할 수있는 방법이 있습니까 주 스크립트에서 액세스 할 수있는 일부 시스템/쉘 변수에 내용을 추가하는 것과 같은 변수가 있습니까?

부모 프로세스가 하위 프로세스로 수정할 수없는 경우가 아니기를 바랍니다.

답변

3

부모 프로세스가 하위 프로세스로 수정할 수없는 경우가 아니기를 바랍니다.

희망 사항은 파선입니다. 죄송합니다. IPC를 사용해야합니다. 이것은 한 가지 방법이다 :

#!/bin/bash 
export pipe="/tmp/mypipe.$$" 
trap 'rm "$pipe"' EXIT 
mkfifo "$pipe" 

make & 

read myfilters < "$pipe" 
echo "myfilters is $myfilters" 

메이크 :

all: 
    echo ${MY_FILTERS} > ${pipe} 

+0

그것은'하지 않아야합니다 (echo가 탭으로 들여 쓰기되어 있습니다) 에코 $ (MY_FILTERS)> $ (파이프)'? 또는 아마도'echo $ (MY_FILTERS)> $ {pipe}' –

+0

대부분은'$ {}'또는'$()'를 허용합니다. 하나 이상의 문자의 매크로 이름은 대체 할 때 중괄호 {}를 필요로합니다. 단 하나의 문자 이름은 (비록 여전히 좋은 생각이지만) 중괄호를 사용하지 않습니다. 괄호()도 사용할 수 있지만 일부 버전의 make에서는 라이브러리를 처리 할 때 특별한 의미가 있습니다. – cdarke

관련 문제