"쉘 기능과 관련된 모든 리디렉션은 기능이 실행될 때 수행됩니다."

"쉘 기능과 관련된 모든 리디렉션은 기능이 실행될 때 수행됩니다."

배쉬 매뉴얼에서

쉘 기능과 관련된 모든 리디렉션(31페이지 섹션 3.6 [리디렉션] 참조)은 함수가 실행될 때 발생합니다.

"쉘 기능과 관련된 리디렉션"은 어디에 지정되어 있습니까? 함수 정의 내의 명령에 대해 지정됩니까, 아니면 함수 호출에 대해 지정됩니까?

인용문에서 함수가 실행될 때 이러한 리디렉션이 발생한다고 강조하는 이유는 무엇입니까?

감사해요.

답변1

간단히 말해서, PSkocik이 주석에서 제안한 것처럼 문제의 문은 함수 실행이 시작되기 전에 덮어쓰이는 것에 bar() { ... } > foo대해 걱정할 필요가 없음을 의미합니다. 즉, 정의된 스크립트를 실행하는 것만으로는 재정의하기에 충분하지 않습니다 . 실제로 호출해야 합니다 . :)foobar()barfoobar

실제로 이는 함수 호출 전에 변수가 확장/평가되지 않는 > "$foo"것과 달리 리디렉션에 변수를 사용할 수 있음을 의미합니다.> foo

이에 대한 많은 토론과 기타 기능 리디렉션 세부 사항은 여기에서 찾을 수 있습니다.http://www.linuxjournal.com/content/more-bash-redirections

관련 정보