簡體   English   中英

在使用該別名調用的函數中使用bash別名

[英]Use bash alias name in a function that was called using that alias

在碼頭游戲 它使用ssh連接,並且每個級別都有不同的用戶名和密碼對。

我用我的bash別名存儲這些對,即每個級別都有一個別名,在這里我用兩個參數調用bash函數:密碼和級別數。

function log.as.bandit() {
    sshpass -p $1 ssh bandit$2@bandit.labs.overthewire.org
}
alias bandit14="log.as.bandit secretPass 14"
alias bandit15="log.as.bandit differentSecretPass 15"

如果我可以僅將參數作為密碼傳遞並從使用的別名中獲取用戶名,那對我來說將更加容易。

題:
可以在別名已調用的函數中使用別名嗎?

在示例中:

function log.as.bandit() {
    sshpass -p $1 ssh $HERE_I_DEREFERENCE_THE_ALIAS_NAME@bandit.labs.overthewire.org
}
alias bandit14="log.as.bandit secretPass"
alias bandit15="log.as.bandit differentSecretPass"

據我所知:不,您不能使用別名來做到這一點。

但是您可以做的是:

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 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM