나는 이중 콜론과 함수 이름이 오늘 배쉬 스크립트를 건너 왔어요 ::
예를 들어, 그들을, file::write()
그리고 file::read()
. Bash 스크립트 에서이 구문을 본 적이 없으며 스크립트를 호출했을 때 놀랍게도 잘 실행되었습니다.
내 시스템 (및 온라인)에서 Bash 매뉴얼 페이지를 검색 한 후 설명서에서 함수 이름에 대한 구문을 지원하는 것을 찾을 수 없습니다. 예를 들어,이 섹션 Shell Defined Functions
은 쉘 함수의 구문을 정의합니다.
function name [()] compound-command [redirection]
(매뉴얼의 다른 곳에서) 토큰 name
은 다음과 같이 정의됩니다.
name A word consisting only of alphanumeric characters and
underscores, and beginning with an alphabetic character
or an underscore. Also referred to as an identifier.
함수 이름에 대한 이중 콜론 구문에 대한 언급은 없습니다.
지금까지 찾은이 이중 콜론 구문에 대한 다른 참조 는 "패키지"의 함수 이름에 이중 콜론 구문을 사용하는 것이 좋습니다 (예 : 하위 쉘 참조 Naming Conventions > Function Names
) mypackage::myfunction()
.
함수 이름에 대한이 이중 콜론 구문은 Bash 쉘의 합법적 인 기능입니까, 아니면 문서화되지 않은 기능입니까? 합법적이라면 Bash 매뉴얼에 어디에 기록되어 있습니까? 나는보고 보았지만 매뉴얼에서 그것에 대해 아무것도 찾을 수 없습니다. 내가 찾은 가장 가까운 ::
것은 PATH
환경 변수를 사용하여 현재 작업 디렉토리를 검색 경로에 추가하는 것입니다.
예
#!/bin/bash
function abc::def() {
echo "${FUNCNAME[0]}"
}
abc::def
이 스크립트를 세 가지 다른 Linux 배포판에서 테스트했으며 세 가지 모두 abc::def
에서 stdout으로 인쇄 합니다.