2017-01-08 27 views
1

我在玩一個叫game in a terminal。它使用ssh連接,併爲每個級別配置一對不同的用戶和密碼。使用bash別名的功能是使用別名

使用我的bash別名來存儲那些對,即我爲每個其中I調用具有2個參數的bash函數電平的別名:水平的密碼和數字。

function log.as.bandit() { 
    sshpass -p $1 ssh [email protected] 
} 
alias bandit14="log.as.bandit secretPass 14" 
alias bandit15="log.as.bandit differentSecretPass 15" 

,如果我能作爲參數傳遞唯一密碼,並從我使用別名,獲取用戶名這將是對我來說更容易。

問:
這有可能在一個已經被稱爲由別名功能使用別名?

在這個例子中:

function log.as.bandit() { 
    sshpass -p $1 ssh [email protected] 
} 
alias bandit14="log.as.bandit secretPass" 
alias bandit15="log.as.bandit differentSecretPass" 

回答

5

據我所知:不,你不能做到這一點與別名。

但是你可以做的是:

function log.as.bandit() { 
    sshpass -p "$1" ssh "${FUNCNAME[1]}"@bandit.labs.overthewire.org 
} 
bandit14() { log.as.bandit secretPass; } 
bandit15() { log.as.bandit differentSecretPass; } 

即用的功能,而不是別名。

FUNCNAME是包含的當前正在執行的功能的名稱的數組。 ${FUNCNAME[0]}是當前函數本身的名稱(log.as.bandit); ${FUNCNAME[1]}是調用函數的名稱(bandit14bandit15)。

+0

我忘了寫,我是與'爲const char * argv的[]'在C.這工作的思維類似的方式,這是我 - 感謝新片知識 – lewiatan