我想通過SSH運行帶有字符串值的perl腳本,但是我無法讓它正常工作。通過SSH傳遞腳本和字符串
我的腳本看起來像下面這樣:
SSH用戶@ Linux的/home/user/script.pl「值1值2值3」
該腳本將執行,但由於某些原因,唯一的價值傳遞給它的值是value1,而不是整個字符串值。它認爲這是因爲雙引號在通過SSH傳輸時會下降?
任何人都可以對此有所瞭解嗎?乾杯。
我想通過SSH運行帶有字符串值的perl腳本,但是我無法讓它正常工作。通過SSH傳遞腳本和字符串
我的腳本看起來像下面這樣:
SSH用戶@ Linux的/home/user/script.pl「值1值2值3」
該腳本將執行,但由於某些原因,唯一的價值傳遞給它的值是value1,而不是整個字符串值。它認爲這是因爲雙引號在通過SSH傳輸時會下降?
任何人都可以對此有所瞭解嗎?乾杯。
通常更容易將更大的值作爲STDIN
傳遞到遠程腳本中。這樣一來,它就不會被命令行解析器或shell所吞噬或破壞。
的問題是,最初設定的報價是由多數民衆贊成被用來調用命令的外殼擴展,所以實際發生的事情是:
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\"
感謝Petesh,我懷疑你是現貨。我會給這個旋轉,看看會發生什麼。 – Teknologist 2015-03-31 11:26:21
更好的向我們展示的代碼。 – serenesat 2015-03-31 10:35:21
您需要顯示perl代碼,以便我們可以瞭解問題。 – 2015-03-31 10:40:57
它不是一個真正的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