2011-03-05 68 views
3

我運行一個通過ssh連接調用另一個腳本的腳本。腳本通過ssh調用腳本=> bash:...:沒有這樣的文件或目錄

我的腳本執行以下命令:

ssh $cluster "bash $create 2 2 $parts" 

其中$cluster是ssh的字符串,$create是在目標機器上的bash腳本的絕對路徑。我在前幾行運行了ssh $cluster "mkdir $serialized/$number",這工作得很好。

但是這個命令返回我:

bash: /data/.../create.bash 1 2 8: No such file or directory 

的文件是在機器上,我可以在那裏執行命令,但我無法弄清楚如何從腳本內通過ssh做到這一點。我嘗試了不同的命令,總是收到這個異常。

感謝您的幫助!

回答

3

一般來說,你不應該首先調用bash。即使在遠程機器使用的shell不是bash的默認情況下,你應該建立create.bash腳本,使得它的頂部看起來像:

 
    #!/bin/bash 

,它會調用已經慶典。

其他的事情要考慮:

  1. 放的完整路徑,以防打壞的路徑是有問題的。

  2. 確保bash 在遠程主機上存在,否則請嘗試'sh'。

1

確定腳本中的引用與引用的引用相同嗎?我期望從以下錯誤:

ssh $cluster "bash '$create 2 2 $parts'" 

或類似。

(請注意,當你得到以下形式的錯誤

bash: mumble: No such file or directory 

咕噥被視爲整個字符串,所以在這種情況下,它正在尋找一個字面上叫/data/.../create.bash 1 2 8文件,用空格和正在採取的數字作爲作爲參數的腳本名稱,而不是一部分)

1

刪除引號:

ssh $cluster bash $create 2 2 $parts 

或者把他們只有圍繞參數:

ssh $cluster bash "$create 2 2 $parts" 

,如果你的變量值包含空格:

ssh $cluster bash "'$create' 2 2 '$parts'" 
+0

哇,這實際工作。謝謝! – progfan 2017-12-13 18:47:30

相關問題