2015-03-31 47 views
0

我想通過SSH運行帶有字符串值的perl腳本,但是我無法讓它正常工作。通過SSH傳遞腳本和字符串

我的腳本看起來像下面這樣:

SSH用戶@ Linux的/home/user/script.pl「值1值2值3」

該腳本將執行,但由於某些原因,唯一的價值傳遞給它的值是value1,而不是整個字符串值。它認爲這是因爲雙引號在通過SSH傳輸時會下降?

任何人都可以對此有所瞭解嗎?乾杯。

+2

更好的向我們展示的代碼。 – serenesat 2015-03-31 10:35:21

+0

您需要顯示perl代碼,以便我們可以瞭解問題。 – 2015-03-31 10:40:57

+1

它不是一個真正的perl問題,我實際上是從AS400上的控制語言程序運行此代碼。我在AS400上使用QSHELL來調用Linux機器上的perl腳本。代碼看起來像這樣:QSH CMD('ssh user @ linuxserv /home/user/myscript.pl「value1 value2 value3」') – Teknologist 2015-03-31 11:23:26

回答

-1

通常更容易將更大的值作爲STDIN傳遞到遠程腳本中。這樣一來,它就不會被命令行解析器或shell所吞噬或破壞。

1

的問題是,最初設定的報價是由多數民衆贊成被用來調用命令的外殼擴展,所以實際發生的事情是:

ssh [email protected] /home/user/script.pl "value1 value2 value3" 

爲結束:

/home/user/script.pl value1 value2 value3 

當從遠程系統運行時。

在遠程端解釋之前,您需要使用引號來避免本地解析。

逃脫引號,你可以這樣做:

ssh [email protected] /home/user/script.pl \"value1 value2 value3\" 
+0

感謝Petesh,我懷疑你是現貨。我會給這個旋轉,看看會發生什麼。 – Teknologist 2015-03-31 11:26:21