我想从函数中获取函数名,以便进行日志记录。
KornShell(ksh)函数:
foo ()
{
echo "get_function_name some useful output"
}
是否有类似$0
的内容,它在脚本中返回脚本名称,但是它提供了一个函数的名称?
答案 0 :(得分:9)
如果使用function
关键字定义函数,则$0
是函数名称:
$ function foo {
> echo "$0"
> }
$ foo
foo
(在pdksh中测试。)
答案 1 :(得分:5)
使用ksh“function foo ...”形式:
$ cat foo1
#!/bin/ksh
foo3() { echo "\$0=$0"; }
function foo2 { echo "\$0=$0"; }
foo2
foo3
$ ./foo1
$0=foo2
$0=./foo1
答案 2 :(得分:5)
[...]使用关键字功能的主要优点是什么?
主要专业是"排版myvar = abc"函数内部现在是一个局部变量,在函数外没有可能的副作用。这使得KSH对于大型shell脚本显然更安全。主要的可能是非POSIX语法。
答案 3 :(得分:0)
下面的函数似乎在Bash和ksh中都得到了它的名字:
# ksh or bash
function foo {
local myname="${FUNCNAME[0]:-$0}"
echo "$myname"
}
# test
foo
# ...