eval로 정의된 함수를 내보내는 방법은 무엇입니까?

eval로 정의된 함수를 내보내는 방법은 무엇입니까?

명령줄에서 실행하여 동적 함수를 정의합니다.

eval "ab() { echo test; }"

테스트를 실행하고 인쇄합니다.

동일한 명령문을 스크립트에 넣은 test.sh다음 스크립트를 실행하십시오. 아무 일도하지. 함수가 정의되지 않았습니다.

함수가 스크립트 외부가 아닌 내부에 정의되어 있기 때문인 것 같습니다. 그래서 스크립트를 추가해 보았습니다.

export -f ab

그러나 이것은 작동하지 않습니다. 스크립트에서 쉘로 함수를 내보내는 방법은 무엇입니까?

답변1

함수나 변수를 상위 셸로 내보낼 수 없으며 스크립트를 실행하는 셸이나 하위 셸로만 내보낼 수 있습니다.

현재 쉘 환경을 변경하는 스크립트의 경우 source스크립트를 사용하거나 실행 해야 합니다 .. 예를 들어, ./myscript.sh실행하는 대신. ./myscript.sh

이는 스크립트를 실행하기 위해 하위 쉘을 생성하는 대신 현재 쉘 자체가 스크립트를 실행한다는 것을 알려줍니다. 따라서 스크립트가 현재 환경을 수정할 수 있습니다.

관련 정보