kshで現在の関数と他の関数のサブ関数を呼び出すには?

kshで現在の関数と他の関数のサブ関数を呼び出すには?

この場合、func1電話がかかりますMain_Func。それは何と呼んでいますか?

Main_Func() {
<code>

}
Initialize_func() {

  func1() {

  <code>

  }

}

答え1

func1定義を取得するには、まずInitialize_funcその定義を1回以上呼び出す必要があります。その後、func1次のように呼び出すことができますfunc1

例:

outer1 () {
    echo 'in outer1'
    inner
}

outer2 () {
    echo 'in outer2'

    inner () {
        echo 'in inner'
    }
}

# First example explained below:
outer1

# Second example explained below:
outer2
outer1

outer1この例では、呼び出さずに呼び出すことが定義されていないouter2ため、機能しません。inner

$ ksh93 script.sh
in outer1
script.sh[3]: inner: not found [No such file or directory]

まず電話outer2してからouter1作業してください。

$ ksh93 script.sh
in outer2
in outer1
in inner

kshfunc1あなたの機能を他の機能と同じ「範囲」に配置します。 C ++や他のオブジェクト指向言語がfunc1何とかInitialize_func

functionこれは、上記のBourneシェル関数構文を使用するのか、Kornシェルのキーワードを使用して関数を定義するのかは関係ありません。

関連情報