如何在 ksh 中调用与当前函数不同的函数的子函数?

如何在 ksh 中调用与当前函数不同的函数的子函数?

在这种情况下,需要func1从调用Main_Func。我怎么称呼它?

Main_Func() {
<code>

}
Initialize_func() {

  func1() {

  <code>

  }

}

答案1

为了func1得到定义,您首先必须Initialize_func至少调用一次。然后你就可以调用func1as just 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]

先调用outer2outer1工作:

$ ksh93 script.sh
in outer2
in outer1
in inner

ksh会将您的func1函数置于与其他函数相同的“范围”中。它不像 C++ 或其他面向对象的语言那样func1以某种方式成为Initialize_func.

function这与您是否使用上述 Bourne shell 函数语法或使用Korn shell 的关键字定义函数无关。

相关内容