2
나는 뭔가를하고 makefile에 결과를 되돌려주는 쉘 스크립트를 호출하고 싶은 곳에서 makefile을 가지고있다.쉘 스크립트의 인수를 makefile에서 전달하고 결과를 다시 얻으려고합니까?
자세한 설명 : - 다음과 같이
내 메이크업 파일에서, 나는 쉘 스크립트를 호출 -
source = $(PWD)
target = $(ROOT)
SCRIPT:= /home/........./temp.sh
FUNCTION:=$(shell $(SCRIPT $source $target))`
쉘 스크립트 "temp.sh"-
source=$1
target=$2
echo There are $# arguments to $0: $*
common_part=$source # for now
result="" # for now
while [[ "${target#$common_part}" == "${target}" ]]; do
common_part="$(dirname $common_part)"
if [[ -z $result ]]; then
result=".."
else
result="../$result"
fi
done
if [[ $common_part == "/" ]]; then
result="$result/"
fi
forward_part="${target#$common_part}"
if [[ -n $result ]] && [[ -n $forward_part ]]; then
result="$result$forward_part"
elif [[ -n $forward_part ]]; then
result="${forward_part:1}"
fi
echo "Result=$result"
나는 동일한의 이유가 될 수있는 것을 쉘 스크립트의 "에코 문을"보이지 않는
- ?
- 결과를 어떻게 makefile로 되돌릴 수 있습니까?
- 이 메이크업 파일에서 스크립트를 호출 할 수있는 권리 방법이 있나요?
나는이 지역에서 초보자입니다.
답변 해 주셔서 감사합니다. 위 명령을 실행하면 다음 오류가 발생합니다. temp.sh : 명령을 찾을 수 없습니다. temp.sh가 현재 디렉토리에 있습니다. 나는 alos가 ./temp.sh에 scipt 값을 시도했지만 여전히 같은 오류가 발생합니다. 아직도 뭔가 빠졌나요? 내가 틀린 곳이면 어디든지 교정하십시오. – user1799483
이 컨텍스트에서 알 수 없습니다. 어쩌면 더 구체적인 세부 사항과 함께 별도의 질문을 게시 할 수 있습니다. – tripleee
makefile에서 각 스크립트는 subshell에서 실행됩니다. 볼 수 있듯이 'shell'은 스크립트를 실행하기 전에 사용됩니다. 그래서 작업 디렉토리에 'cd'하고 스크립트를 실행하는 것이 좋습니다. 예. $ (쉘 CD를 $ (WORKING_DIR) ./$(SCRIPT_name) $ (소스) $ (대상)) 당신이 다음 스크립트를 실행하기 전에에 PWD 할 수있는 디렉토리 알고 싶다면 – Omkar