Shell-Script
如何在 ksh 中呼叫與目前函式不同的函式的子函式?
在這種情況下,需要呼叫
func1
fromMain_Func
。我怎麼稱呼它?Main_Func() { <code> } Initialize_func() { func1() { <code> } }
要
func1
被定義,您首先必須Initialize_func
至少呼叫一次。然後你可以打電話給func1
justfunc1
。例子:
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 函式語法還是使用
function
Korn shell 的關鍵字定義函式無關。