Su_scriptingbee Asked: 2018-01-12 23:40:11 +0800 CST2018-01-12 23:40:11 +0800 CST 2018-01-12 23:40:11 +0800 CST 如何在 ksh 中调用与当前函数不同的函数的子函数? 772 在这种情况下,需要调用func1from Main_Func。我怎么称呼它? Main_Func() { <code> } Initialize_func() { func1() { <code> } } shell-script ksh 1 个回答 Voted Best Answer Kusalananda 2018-01-12T23:48:01+08:002018-01-12T23:48:01+08:00 要func1被定义,您首先必须Initialize_func至少调用一次。然后你可以打电话给func1just 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. 这与您是使用上述 Bourne shell 函数语法还是使用functionKorn shell 的关键字定义函数无关。
要
func1
被定义,您首先必须Initialize_func
至少调用一次。然后你可以打电话给func1
justfunc1
。例子:
在此示例中调用
outer1
而不调用outer2
将不起作用,因为inner
尚未定义:先调用
outer2
然后outer1
工作:ksh
会将您的func1
功能置于与其他功能相同的“范围”中。它不像 C++ 或其他面向对象的语言那样func1
在Initialize_func
.这与您是使用上述 Bourne shell 函数语法还是使用
function
Korn shell 的关键字定义函数无关。