다음과 같은 bash 함수를 작성한다고 가정해 보겠습니다.
function.sh
usage () {echo "No arguments are needed";}
myfunction () {
if [[ $# -qt 0 ]] ;
then
usage
fi
echo "Hello World"
}
그럼 source function.sh
내가. 그러나 거기에 정의된 또 다른 스크립트도 있고 usage()
그 내용도 알 수 있습니다.
나는 달려가 전화를 myfunction -myWorld
걸었고 usage()
어떻게 든 올바른 번호로 전화를 걸었습니다.
usage()
bash는 어느 것을 호출할지 어떻게 알 수 있나요 ?
답변1
귀하의 질문에 대한 답변은 현재 Bash 호출입니다.마지막으로 정의된 버전함수.
사용 예의 두 가지 수정된 버전:
function1.sh
usage () { echo "Usage from function1.sh - No arguments are needed"; }
myfunction1 () {
if [[ $# -gt 0 ]] ;
then
usage
fi
echo "Hello World"
}
function2.sh
usage () { echo "Usage from function2.sh - No arguments are needed"; }
myfunction2 () {
if [[ $# -gt 0 ]] ;
then
usage
fi
echo "Hello World"
}
그런 다음 실행
$ source function1.sh
$ source function2.sh
$ usage
출력을 줄 것이다
Usage from function2.sh - No arguments are needed
스크립트에서 다음 사항에 유의하세요.
-qt
이어야 하며-gt
, 그리고;usage()
- 주변에 일부 공간이 누락되었습니다.echo
답변2
위의 포스터가 내 질문에 직접 답변했기 때문에 정답인 나를 빼앗고 싶지 않습니다.
그래도 후속편을 포스팅하고 싶었어요.
함수를 소싱하는 대신 function.sh가 있는 디렉터리를 PATH에 추가하고 파일 이름을 myfunction으로 변경했습니다. myfunction 파일의 마지막 줄은 입니다 myfunction $@
.