2013-05-05 136 views
2

有没有办法让一个bash别名(或函数)的名字来自一个变量?变量的Bash别名

举例来说,是有可能做这些方针的东西:

create_alias_with_name() { 
    alias $1="echo a custom alias" 
} 

或者沿着这些路线的东西:

create_func_with_name() { 
    $1() { 
    "echo inside a function with a variable name" 
    } 
} 

换句话说,我宁愿有某种功能“工厂”,可以为我注册功能。这是可能的还是超出了Bash的功能?

回答

4

你甚至尝试过吗?你的第一个例子工作正常。

您可以通过添加eval使第二工作:

create_func_with_name() { 
    eval "$1() { 
    echo inside a function with a variable name 
    }" 
} 
+0

当然,我尝试过了发布...如果它工作过,我也不会帐前! 它没有工作,现在它不工作。你确定第一个例子工作正常吗?当我运行它并尝试命令时,我得到“命令未找到错误”。 但是,感谢您修复第二个片段。这对我很好,非常感谢你! – 2013-05-05 23:17:31

+0

我复制并粘贴你的例子到我的终端,它工作正常。仍然如此。我在Mac上,所以我确信我的bash版本是旧的:“GNU bash,版本3.2.48(1)-release(x86_64-apple-darwin12) Copyright(C)2007 Free Software Foundation,Inc. ”。 – 2013-05-06 03:19:32

+0

嗯,我正在运行“GNU bash,版本4.2.45(1) - 发布(x86_64-pc-linux-gnu)版权所有(C)2011”所以实际上没有那么多新。嗯 - 我想教训是别名不如函数可靠。 – 2013-05-06 06:59:11