以下功能挂起:
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
这是一个非常常见的命令,没有人会期望以这种方式运行!