2013-09-01 24 views
0

我做了一個bash腳本來生成一個ssh,我總是使用一些選項。最後,它爲任何要執行的內容迴應一個字符串,然後執行它。目前,我想要添加的功能,在bash命令添加到運行一次ssh的完成,但它給了一個錯誤,像這樣:功能在CLI上運行,但不是來自bash腳本

bash: /bin/echo 'hello'; bash -l: No such file or directory 

然而,如果我把它複製運行命令,並運行它從可執行文件外部,它運行完美。是否有任何理由我會從可執行文件中獲取此錯誤,而不是從CLI獲取?

它產生的一個例子命令是:

pair -c "/bin/echo 'hello'" 
Running: ssh ****@#.#.#.# -p443 -t "/bin/echo 'hello'; bash -l" 
+0

創建錯誤的確切命令是什麼?或者至少向我們展示生成並調用命令的腳本部分。 – konsolebox

回答

0

這是因爲過強的報價最有可能引起的。此錯誤路線

bash: /bin/echo 'hello'; bash -l: No such file or directory 

顯示的bash不會嘗試與隨後命令bash -l參數'hello'執行命令/bin/echo。相反,bash正試圖執行命令/bin/echo 'hello'; bash -l

比較:

$ ssh localhost -t "/bin/echo 'foo'; bash -l" 
foo 
$ logout # this is the new shell 
Connection to localhost closed. 

和:

$ ssh localhost -t '"/bin/echo 'foo'; bash -l"' 
bash: /bin/echo foo; bash -l: No such file or directory 
Connection to localhost closed. 

解決這個問題通常涉及eval,但我不能肯定地告訴我,除非看到你更多的代碼。

相關問題