将函数存储在unix变量中

时间:2012-06-25 23:02:57

标签: function shell unix

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

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

$temp; // prints I am in function.

请告诉我。

3 个答案:

答案 0 :(得分: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来使用变量中的文本定义函数。但是,这是error-prone and contrary to best practices,通常不应该这样做。

如果您描述了实际用例,那么应该有一个更好的例子来说明正确的方法来实现您想要的结果。

答案 1 :(得分:1)

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

答案 2 :(得分: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;}