在这种情况下,需要func1
从调用Main_Func
。我怎么称呼它?
Main_Func() {
<code>
}
Initialize_func() {
func1() {
<code>
}
}
答案1
为了func1
得到定义,您首先必须Initialize_func
至少调用一次。然后你就可以调用func1
as 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]
先调用outer2
再outer1
工作:
$ ksh93 script.sh
in outer2
in outer1
in inner
ksh
会将您的func1
函数置于与其他函数相同的“范围”中。它不像 C++ 或其他面向对象的语言那样func1
以某种方式成为Initialize_func
.
function
这与您是否使用上述 Bourne shell 函数语法或使用Korn shell 的关键字定义函数无关。