2

我正在尝试在 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 挂载)。目录和文件名被传递给脚本,该脚本将在我的远程盒子上解压缩该文件。

谢谢!

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

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'

4

1 回答 1

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 端需要一级引号。

于 2011-04-24T23:04:55.027 回答