如何创建一个从内容变量命名的函数?我想编写一个模板脚本,用于定义以脚本自己的文件名命名的函数.像这样的东西(当然不起作用):
#!/bin/bash
bname="$(basename $0)" # filename of the script itself
someprefix_${bname}() { # function's name created from $bname variable
echo test
}
Run Code Online (Sandbox Code Playgroud)
因此,如果脚本的文件名是foo.sh,那么它应该定义一个名为someprefix_fooecho test 的函数.
Eug*_*ash 21
你可以使用eval:
eval "someprefix_${bname}() { echo test; }"
Run Code Online (Sandbox Code Playgroud)
Bash甚至允许"."在函数名称中使用:)
小智 10
实际上,上述结构破坏了在其中嵌入引号的可能性并且因此可能是错误的,这是有益的.然而,以下结构确实提供了类似的功能,同时没有前一个答案的约束.
供您审核:
source /dev/stdin <<EOF
function someprefix_${bname}()
{
echo "test";
};
EOF
Run Code Online (Sandbox Code Playgroud)