2017-01-08 6 views
1

Я играю game in a terminal. Он использует ssh-соединение и имеет разные пары пользователей и пароль для каждого уровня.Используйте имя псевдонима bash в функции, которая была вызвана с использованием этого псевдонима

Я использую свои псевдонимы bash для хранения этих пар, то есть у меня есть псевдоним для каждого уровня, где я вызываю функцию 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]} - имя вызывающей функции (bandit14 или bandit15).

+0

Я забыл написать, что я думал о том же, что и в 'const char * argv []' в C. Это работает, и это новая часть знаний для меня - спасибо – lewiatan