Bash 스크립트를 작성할 때 스크립트는 어떤 사용법()을 호출할지 어떻게 알 수 있나요?

Bash 스크립트를 작성할 때 스크립트는 어떤 사용법()을 호출할지 어떻게 알 수 있나요?

다음과 같은 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 $@.

관련 정보