2013-05-05 133 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