IT Share you

일부 bash 스크립트에서 사용되는 'function'키워드는 무엇입니까?

shareyou 2020. 12. 14. 21:06
반응형

일부 bash 스크립트에서 사용되는 'function'키워드는 무엇입니까?


예 : Bash-Prog-Intro-HOWTO

함수 foo () {}

검색 쿼리를 작성 info bash하고 POSIX의 releted 장에서 함수 키워드를 찾았지만 아무것도 찾지 못했습니다.

function일부 bash 스크립트에서 사용되는 키워드 는 무엇입니까 ? 더 이상 사용되지 않는 구문입니까?


function배쉬에서 함수를 정의 할 때에 설명 된대로 키워드는 선택 사항입니다 수동 :

함수는 다음 구문을 사용하여 선언됩니다.

name () compound-command [ redirections ]

또는

function name [()] compound-command [ redirections ]

구문의 첫 번째 형식은 일반적으로 Bourne / Korn / POSIX 스크립트와 호환되고 이식성이 높기 때문에 선호됩니다.
즉, 때때로 function키워드를 사용하여 Bash 별칭 이 함수 이름과 충돌 하지 않도록 할 수 있습니다 . 이 예를 고려하십시오.

$ alias foo="echo hi"
$ foo() { :; }
bash: syntax error near unexpected token `('

여기서는 명령 'foo'첫 번째 단어 이기 때문에 동일한 이름의 별칭 텍스트로 대체됩니다 . 으로 function별칭 확장되지 않은 :

 $ function foo() { :; }

function함수 이름도 별칭 때 키워드는 드문 경우에 필요하다. 그것이 없으면 Bash는 함수 정의를 구문 분석하기 전에 별칭을 확장합니다.

alias mycd=cd
mycd() { cd; ls; }  # Alias expansion turns this into cd() { cd; ls; }
mycd                # Fails. bash: mycd: command not found
cd                  # Uh oh, infinite recursion.

function키워드를 사용하면 의도 한대로 작동합니다.

alias mycd=cd
function mycd() { cd; ls; }  # Defines a function named mycd, as expected.
cd                           # OK, goes to $HOME.
mycd                         # OK, goes to $HOME.
\mycd                        # OK, goes to $HOME, lists directory contents.

예약어 function는 선택 사항입니다. bash man 페이지 의 'Shell Function Definitions'섹션을 참조 하십시오 .

참고 URL : https://stackoverflow.com/questions/7917018/what-is-the-function-keyword-used-in-some-bash-scripts

반응형