在KornShell脚本中获取函数名称

Dim*_*ima 6 unix shell scripting ksh

我想从函数中获取函数名称,以便进行日志记录.

KornShell(ksh)功能:

foo ()
{
    echo "get_function_name some useful output"
}
Run Code Online (Sandbox Code Playgroud)

有什么类似的$0,它返回脚本中的脚本名称,但它提供了一个函数的名称?

Fre*_*Foo 9

如果使用function关键字定义函数,则$0函数名称为:

$ function foo {
>     echo "$0"
> }
$ foo
foo
Run Code Online (Sandbox Code Playgroud)

(在pdksh中测试过.)


小智 6

[...]使用关键字功能的主要优点/缺点是什么?

主要的是,函数内部的"排版myvar = abc"现在是一个局部变量,在函数外没有可能的副作用.这使得KSH对于大型shell脚本显然更安全.主要的可能是非POSIX语法.


小智 5

使用ksh"function foo ..."形式:

$ cat foo1
#!/bin/ksh
foo3() { echo "\$0=$0"; }
function foo2 { echo "\$0=$0"; }
foo2
foo3
$ ./foo1
$0=foo2
$0=./foo1
Run Code Online (Sandbox Code Playgroud)