2011-04-24 69 views
2

我試圖在winXP上使用plink來連接到Linux服務器並執行命令。下面是我在命令行運行:使用PLINK發送帶單引號和雙引號的遠程命令

plink some_profile cd "$(echo 'T:\somedir\somesubdir with space in it\' | sed 's_\\_/_g' | sed 's_T:_/media/drive1_g')";unrar x 'somefile.rar'

如果我在Linux中直接它完美地執行這一命令部分(先從CD)。但是當我通過砰砰運行它,它失敗,出現以下錯誤:

bash: line 0: cd: /media/drive1/somedir/somesubdir: No such file or directory

我認爲會在通過砰砰所以它不是轉移到處理的空間中所需的報價,我沒有正確引用命令目錄。關於如何引用它的任何想法,以便它可以工作?

如果你想知道爲什麼我這樣做,它基本上是一個腳本,我在目錄Opus上運行,我可以在其中解壓目前我已經突出顯示的文件(一個samba mount)。目錄和文件名被傳遞到腳本,這將在我的遠程盒子上的那個文件。

謝謝!

編輯:由於來自Mikel的迴應解決了問題。這裏是你需要添加引號的另一個層面,如任何人遇到這種後來在現在的情況下,工程行...

plink some_profile cd \"$(echo 'T:\somedir\somesubdir with space in it\' | sed 's_\\_/_g' | sed 's_T:_/media/drive1_g')\";unrar x 'somefile.rar'

回答

2

plink some_profile cd "\"$(echo 'T:\somedir\somesubdir with space in it\' | sed 's_\\_/_g' | sed 's_T:_/media/drive1_g')\"";unrar x 'somefile.rar' 

這是因爲在Windows端需要一個級別的引號,而在Linux端需要一個級別的引號。

+0

感謝您的快速響應。不幸的是,它沒有奏效。這是我現在得到的錯誤: 慶典:-c:0行:意外的EOF而尋找匹配'「」 慶典:-c:第1行:語法錯誤:文件 系統找不到指定的路徑意外結束。 – Ali 2011-04-24 23:43:07

+0

我想通了!這只是一個逃避雙引號的問題。我不需要添加任何額外的雙引號。你的回答讓我找到了正確的答案,所以謝謝Mikel!我會用正確的格式更新原文 – Ali 2011-04-24 23:57:27