如何定义函数以在bash中创建函数? 在bash中是否可以使用简单的函数工厂?
例如:如何定义函数以在bash中创建函数? 在bash中是否可以使用简单的函数工厂?,bash,function,Bash,Function,例如:function\u factory func1 func2 func3将创建三个只具有传递名称的函数,而不执行任何操作 这些生成的函数应该使用likeexport-f function\u name导出,以确保它们在function\u工厂的相同环境中可用也许您可以使用eval: function generate_hello { eval "function say_hello_to_$1 { echo hello $1; }" } 然后运行它: $ generate_hello
function\u factory func1 func2 func3
将创建三个只具有传递名称的函数,而不执行任何操作
这些生成的函数应该使用like
export-f function\u name
导出,以确保它们在function\u工厂的相同环境中可用
也许您可以使用eval
:
function generate_hello {
eval "function say_hello_to_$1 { echo hello $1; }"
}
然后运行它:
$ generate_hello world
$ say_hello_to_world
hello world
可能是这样的:
#!/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
这是我能得到的最小值:
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