Dim*_*ima 6 unix shell scripting ksh
我想从函数中获取函数名称,以便进行日志记录.
KornShell(ksh)功能:
foo ()
{
echo "get_function_name some useful output"
}
Run Code Online (Sandbox Code Playgroud)
有什么类似的$0,它返回脚本中的脚本名称,但它提供了一个函数的名称?
如果使用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)