Bash 函数挂起,而命令在没有函数的情况下完美运行

Bash 函数挂起,而命令在没有函数的情况下完美运行

以下功能挂起:

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

ssh;

如果我运行以下命令,它们可以正常工作:

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

有人可以指导我寻找错误的正确方向吗?

答案1

您遇到了递归错误。您定义了一个名为“ssh”的函数,然后在您的函数中调用了同一个函数。这会导致递归循环。

指定二进制文件的绝对路径ssh就可以修复它。

答案2

我刚刚犯了同样的错误。我认为您也可以使用该command命令来运行与函数同名的命令(二进制文件本身),以避免对二进制文件的路径进行硬编码:

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

虽然对于您在这里所做的事情,我确实建议以不同的方式命名该函数;ssh这是一个非常常见的命令,没有人会期望以这种方式运行!

相关内容