IT박스

Bash 또는 Shell 스크립트에서 함수 선언을 전달 하시겠습니까?

itboxs 2020. 9. 7. 07:55
반응형

Bash 또는 Shell 스크립트에서 함수 선언을 전달 하시겠습니까?


bash를 들어 C / C ++에서 잘 알려진 포워드 선언과 같은 것 또는 적어도 유사한 (해결 방법)이 있습니까?

아니면 예를 들어 항상 한 번의 패스 (한 줄씩)로 실행되기 때문에 그런 것이 있습니까?

전방 선언이없는 경우 스크립트를 더 쉽게 읽을 수 있도록하려면 어떻게해야합니까? 다소 길고 처음에는 이러한 함수 정의가 전역 변수와 혼합되어 스크립트가보기 흉하고 읽기 / 이해하기 어렵게 만듭니다)? 나는 그러한 경우에 대해 잘 알려진 / 모범 사례를 배우기를 요청하고 있습니다.


예를 들면 :

# something like forward declaration
function func

# execution of the function
func

# definition of func
function func
{
    echo 123
}

좋은 질문입니다. 대부분의 스크립트에 다음과 같은 패턴을 사용합니다.

#!/bin/bash

main() {
    foo
    bar
    baz
}

foo() {
}

bar() {
}

baz() {
}

main "$@"

You can read the code from top to bottom, but it doesn't actually start executing until the last line. By passing "$@" to main() you can access the command-line arguments $1, $2, et al just as you normally would.


When my bash scripts grow too much, I use an include mechanism:

File allMyFunctions:

foo() {
}

bar() {
}

baz() {
}

File main:

#!/bin/bash

. allMyfunctions

foo
bar
baz

참고URL : https://stackoverflow.com/questions/13588457/forward-function-declarations-in-a-bash-or-a-shell-script

반응형