【发布时间】:2019-10-31 16:47:29
【问题描述】:
我有一个如下的 perl 脚本,我想使用 rsh 从 linux 机器访问远程 windows 机器上的网络路径。
$cmd = "rsh -l $username $host \"pushd \\\\network\\path\\to\\the\\directory && dir\"";
print $cmd, "\n";
print qx($cmd);
当我运行脚本时,第三行打印输出 The system cannot find the path specified. 但是,如果我直接从终端运行第二行打印的命令,它工作正常。
我无法理解为什么脚本不起作用。如果命令从终端运行,它也应该使用 qx() 运行。
【问题讨论】:
-
目前尚不清楚从命令行运行的具体内容。如果这是您在
$cmd = "rsh ...."中的确切行,那么您可能需要添加另一层转义,因为双引号将\\path解释为\path。 -
当我从终端运行第二行打印的命令(即字符串值
$cmd)时,它运行良好。但是,第三行(即qx($cmd))给出了问题中提到的错误。我已经在路径的开头使用了四个反斜杠 `\\\\`,并将所有其他反斜杠转义为 `\\`。 -
就个人而言,我会使用 String::ShellQuote 和 Win32::ShellQuote 的组合来构建命令
标签: perl terminal remote-connection rsh qx