bash - 在使用该别名调用的函数中使用 bash 别名

标签 bash function alias

我正在玩 game in a terminal .它使用 ssh 连接,每个级别都有一对不同的用户和密码。

我使用我的 bash 别名来存储这些对,即我为每个级别都有一个别名,我在其中调用带有 2 个参数的 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)。

关于bash - 在使用该别名调用的函数中使用 bash 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41532874/

相关文章:

linux - 在无限循环中逐行读取文件直到中断

bash - 使用sed更改tomcat监听端口

JavaScript,未知语法

mysql - 相关家庭成员的 SQL 数据库

bash - 以字节为单位打印 "du"

java - 无法通过源启动 JIRA

javascript - jQuery 文档就绪 - 函数调用 : sequential or asynch?

C 函数 shuffle、read_vector、display_vector

mli 文件的模块别名

java - 如何在 jOOQ 中使用别名