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呼び出しです。最後に定義されたバージョン関数。

使用例の2つの修正バージョン:

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 $@

関連情報