我是unix的新手。我想知道是否有任何方法可以将函数分配给unix变量,例如:
temp=funcname(){echo 'I am in function'};
$temp; // prints I am in function.
请告诉我。
答案 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;}