3

我是unix的新手。我想知道是否有任何方法可以将函数分配给 unix 变量,例如:

temp=funcname(){echo 'I am in function'};

$temp; // prints I am in function.

请告诉我。

4

3 回答 3

4

函数在 UNIX shell 中不是一流的。但是,您可以将函数的名称存储在 shell 变量中并由此调用它。

funcname_foo() {
  echo "I am a function"
}
temp=funcname_foo
"$temp"

也就是说——如果你想有条件地指向一个不同的函数,你可以很容易地有条件地定义它:

if [ "$foo" = bar ] ; then
  funcname() { echo "Function A"; }
else
  funcname() { echo "Function B"; }
fi
funcname # actually call the function

可以通过使用eval;使用来自变量的文本来定义函数。但是,这很容易出错并且与最佳实践相反,通常不应该这样做。

If you described your actual use case, a better example of the right way to achieve your desired result should be possible.

于 2012-06-25T23:09:18.717 回答
1

不。在传统的 *nix shell 中,函数不是一流的。

于 2012-06-25T23:08:06.597 回答
0

在 bash shell 中使用函数,例如:

function manhtm { man -R=ASCII $1 | rman -f HTML > ~/tmp/$1-man.html && firefox ~/tmp/$1-man.html;}

function rff { sudo rfcomm connect $1;}
于 2012-06-25T23:08:10.120 回答