Ubuntu

Bash 函式掛起,而命令在沒有功能的情況下完美執行

  • August 13, 2021

以下功能掛起:

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

ssh;

而如果我執行以下命令,它們可以正常工作:

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

有人可以指導我尋找錯誤的正確方向嗎?

你有一個遞歸錯誤。您定義一個名為“ssh”的函式,然後在您的函式中呼叫相同的函式。這導致遞歸循環。

指定ssh二進製文件的絕對路徑,這應該可以修復它。

我只是犯了同樣的錯誤。我認為您還可以使用該command命令來執行與函式同名的命令(二進製文件本身),以避免硬編碼二進製文件的路徑:

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

儘管對於您在這裡所做的事情,我確實建議以不同的方式命名該函式;ssh是一個非常常見的命令,沒有人會期望以這種方式表現!

引用自:https://serverfault.com/questions/609981