Para que func1
seja definido, primeiro você terá que chamar Initialize_func
pelo menos uma vez. Então você pode chamar func1
como apenas func1
.
Exemplo:
outer1 () {
echo 'in outer1'
inner
}
outer2 () {
echo 'in outer2'
inner () {
echo 'in inner'
}
}
# First example explained below:
outer1
# Second example explained below:
outer2
outer1
Chamar outer1
sem chamar outer2
neste exemplo não funcionará, pois inner
ainda não está definido:
$ ksh93 script.sh
in outer1
script.sh[3]: inner: not found [No such file or directory]
Chamando outer2
primeiro e, em seguida, outer1
funciona:
$ ksh93 script.sh
in outer2
in outer1
in inner
ksh
colocará sua função func1
no mesmo "escopo" das outras funções. Não é como em C ++ ou outras linguagens orientadas a objetos que func1
de alguma forma se torna uma subfunção ou método em algum escopo interno de Initialize_func
.
Isso ocorre independentemente de você usar a sintaxe da função shell Bourne como acima ou definir suas funções usando a palavra-chave function
do shell Korn.