Shell-Script

如何在 ksh 中呼叫與目前函式不同的函式的子函式?

  • January 12, 2018

在這種情況下,需要呼叫func1from Main_Func。我怎麼稱呼它?

Main_Func() {
<code>

}
Initialize_func() {

 func1() {

 <code>

 }

}

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++ 或其他物件導向的語言那樣func1Initialize_func.

這與您是使用上述 Bourne shell 函式語法還是使用functionKorn shell 的關鍵字定義函式無關。

引用自:https://unix.stackexchange.com/questions/416521