如何定义一个在bash中创建函数的函数?

时间:2013-05-29 09:49:24

标签: bash function

如果在bash中可以使用简单的函数工厂吗?

例如:function_factory func1 func2 func3将创建三个函数,只有传递的名称而不做任何事情。

这些生成的函数应该与export -f function_name一样导出,以确保它们在function_factory的相同环境中可用。

3 个答案:

答案 0 :(得分:1)

也许你可以使用eval

function generate_hello {
  eval "function say_hello_to_$1 { echo hello $1; }"
}

然后运行它:

$ generate_hello world
$ say_hello_to_world
hello world

答案 1 :(得分:0)

可能是这样的:

#!/bin/bash

function function_factory()
{
  while [ $# -ne 0 ]
  do
    eval "
    function $1()
{
  echo \"my name is $1\"
}
"
    shift
  done
}

function_factory fun1 fun2 fun3

fun1
fun3

输出:

$ ./test 
my name is fun1
my name is fun3

答案 2 :(得分:0)

这是我能得到的最小值:

factory() { for f; do eval "$f() { :; }"; done; }

然后:

$ factory f{1..3}
$ type f1 f2 f3 f4
f1 is a function
f1 () 
{ 
    :
}
f2 is a function
f2 () 
{ 
    :
}
f3 is a function
f3 () 
{ 
    :
}
bash: type: f4: not found