함수에서 파이프라인을 통해 에코를 리디렉션할 때 환경 변수가 설정되지 않습니다.

함수에서 파이프라인을 통해 에코를 리디렉션할 때 환경 변수가 설정되지 않습니다.

이 명령은 다음과 같습니다.

echo '18' | source meta-cmf-raspberrypi/setup-environment

대신 간단히 다음과 같이 환경 변수를 설정하지 마십시오.

source meta-cmf-raspberrypi/setup-environment

입력에 "18"이 있습니다.
링크의 질문 :파이프라인에서 내 함수가 호출될 때 환경 변수가 설정되지 않습니다.

다음을 시도했기 때문에 내 문제를 해결하지 못했습니다.

echo '18' > >(source meta-cmf-raspberrypi/setup-environment)

성공없이. 문제를 어떻게 해결하나요?

답변1

파이프라인에서 스크립트는 별도의 환경에서 제공됩니다. 프로세스 대체 예에서도 마찬가지입니다. 이는 스크립트에 설정된 변수가 하위 환경에서 호출 셸로 설정됨을 의미합니다. 하위 환경의 변경 사항은 상위 환경에 전파될 수 없습니다.

별도의 환경에서 스크립트를 소싱하지 않고 두 가지 방법으로 이 문제를 해결할 수 있습니다.

첫 번째 방법은 "여기 문자열"을 이해하는 셸에서 작동합니다.

source meta-cmf-raspberrypi/setup-environment <<<18

두 번째 방법은 표준 here-document를 사용하는 것입니다.

source meta-cmf-raspberrypi/setup-environment <<END_INPUT
18
END_INPUT

두 변형 모두에서 스크립트는 현재 환경에서 제공되며 입력은 here-string/here-document에서 리디렉션됩니다.

관련 정보