Функция Bash зависает в то время как команда, выполненная отлично без функции

Следующая функция зависает:

ssh() {
    local RESULTS;
    RESULTS=$(ssh $USERNAME@$SERVER $SSH_COMMAND1);
    echo $RESULTS;
}

ssh;

в то время как, если я выполняю следующие команды, они хорошо работают:

    RESULTS=$(ssh $USERNAME@$SERVER $SSH_COMMAND1);
    echo $RESULTS;

Кто-то может вести меня к правильному направлению поиска ошибки?

0
задан 3 July 2014 в 22:16
2 ответа

У вас рекурсивная ошибка. Вы определяете функцию, которая называется 'ssh', затем вызываете ту же самую функцию в своей функции. Это приводит к рекурсивному циклу.

Укажите абсолютный путь к двоичному файлу ssh, и это должно его исправить.

.
3
ответ дан 4 December 2019 в 12:31

Я только что сделал ту же ошибку. Я думаю, вы также можете использовать команду command для запуска команды (сам двоичный файл), которая имеет то же имя, что и функция, чтобы избежать жесткого кодирования пути к двоичному файлу:

ssh() {
    local RESULTS;
    RESULTS=$(command ssh $USERNAME@$SERVER $SSH_COMMAND1);
    echo $RESULTS;
}

Хотя для чего вы делаете здесь, я рекомендую назвать функцию по-другому; ssh — очень распространенная команда, от которой никто не ожидал такого поведения!

0
ответ дан 13 August 2021 в 14:55

Теги

Похожие вопросы