다양한 실행 함수의 이름을 제공하는 FUNCNAME 배열 변수를 사용하고 있습니다. 사용하는 과정에서 main
내부의 기능을 발견했습니다 ${FUNCNAME[max_ind]}
.
main
이 함수는 쉘 스크립트의 어디에 정의되어 있나요? 어떤 코드가 작성되어 main
있으며 어떻게 사용하나요? 기본적으로 이 기능에 대한 모든 정보입니다 main
.
답변1
이것이 쉘 스크립팅의 주요 수준입니다.
FUNCNAME
그 자체는 Bash에만 해당되는 것으로 보이며 매뉴얼 페이지에는 다음과 같이 나와 있습니다.
현재 실행 중인 호출 스택에 있는 모든 셸 함수의 이름을 포함하는 배열 변수입니다. 인덱스 0의 요소는 현재 실행 중인 쉘 함수의 이름입니다. 맨 아래 요소(인덱스가 가장 높은 요소)는 "main"입니다. 이 변수는 쉘 함수가 실행될 때만 존재합니다.
이는 예를 들어 다음 스크립트와 같이 지저분해질 수도 있음을 의미합니다.
#!/bin/bash
main() {
foo
}
foo() {
declare -p FUNCNAME;
}
main
인쇄됩니다
declare -a FUNCNAME=([0]="foo" [1]="main" [2]="main")
두 개의 main
기능이 동일하지는 않지만.
이라는 함수를 명시적으로 생성하는 것은 그리 무리한 일이 아닙니다 main
. 전용 메인 함수를 사용하면 메인 프로그램이 한 곳에 있고 다른 함수 정의 사이에 분산되어 있지 않을 수 있으므로 코드를 구조화하는 데 도움이 될 수 있으므로 스크립트를 읽는 것이 더 쉬울 수 있습니다.
main "$@"; exit
실행 중에 스크립트 파일이 수정되더라도 실행 중인 스크립트에 영향을 주지 않도록 하기 위해 모든 것을 함수에 넣고 이를 메인 레벨에서 호출하는 관용구도 있습니다 . 바라보다:실행하기 전에 전체 쉘 스크립트를 읽는 방법은 무엇입니까?
main
비슷한 목적으로 Python과 같은 더 유명한 것 대신 Bash를 사용하도록 선택한 이유를 모르겠습니다 .__main__