[bash] 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 "$@"
위에서 아래로 코드를 읽을 수 있지만 실제로는 마지막 줄까지 실행을 시작하지 않습니다. 전달하여 "$@"
메인에 () 명령 줄 인수에 액세스 할 수 있습니다 $1
, $2
, 등 당신이 평소처럼.
답변
bash 스크립트가 너무 커지면 포함 메커니즘을 사용합니다.
파일 allMyFunctions
:
foo() {
}
bar() {
}
baz() {
}
파일 main
:
#!/bin/bash
. allMyfunctions
foo
bar
baz