2011-04-24 68 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