使用PLINK发送带单引号和双引号的远程命令

时间:2011-04-24 19:11:12

标签: whitespace quotes double-quotes plink

我正在尝试在winXP上使用plink连接到linux服务器并执行命令。这是我正在运行的命令行:

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开头),它就能完美运行。但是当我通过plink运行它时,它会因以下错误而失败:

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

我认为在通过plink时我没有正确引用命令,因此它不会传输处理目录中空格所需的引号。关于如何引用它以使其有效的任何想法?

如果您想知道我为什么要这样做,它基本上是我在Directory Opus上运行的脚本,我可以在其中解析我当前突出显示的文件(samba挂载)。目录和文件名将传递给脚本,该脚本将是远程盒子上的文件的unrar文件。

谢谢!

编辑:由于米克尔的回应,问题解决了。以下是现在可以使用的行,以防其他人稍后遇到此情况......

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'

1 个答案:

答案 0 :(得分: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端需要一个级别的引号。