微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Perl如何将带有空格的文件路径传递给反引号

如何解决Perl如何将带有空格的文件路径传递给反引号

我正在尝试使用反引号(包含空格的文件路径)调用svn update。

$folder = "D:\\Projects\\Development_SVN\\Project Hay\\Release\\Branches\\R2.3\\";
updateFolder($folder);

sub UpdateFolder {
my $SVNPath = $_[0];

    &main::logWriteAndPrint("    Updating $SVNPath (using backticks)\n");

    my $svnCmd = 'svn up --set-depth infinity '.'\''.$SVNPath.'\'';
    my $svnResp = `$svnCmd 2>&1`;

# this works
#   my $svnResp = `svn up --set-depth infinity "D:\\Projects\\Development_SVN\\Project Hay\\Release\\Branches\\R2.3" 2>&1`;
}

这不能使用空格:

my $svnCmd = 'svn up --set-depth infinity '."$SVNPath";
my $svnResp = `$svnCmd 2>&1`;

但有空格则返回:

Updating 'D:\Projects\Development_SVN\Project':
At revision 20938.
Skipped 'Hay\Release\Branches\R2.3'
Summary of updates:
  Updated 'D:\Projects\Development_SVN\Project' to r20938.
Summary of conflicts:
  Skipped paths: 1

我尝试使用双引号,单引号,转义字符,但无法正确处理。

我认为结尾的斜杠没有帮助,但我也尝试将其删除

谢谢

编辑-带有命令行示例:

C:> svn up --set-depth infinity D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3 更新'D:\ Projects \ Development_SVN \ Project': 修订版20950。 跳过“干草\发布\分支\ R2.3” 更新摘要: 将“ D:\ Projects \ Development_SVN \ Project”更新为r20950。 冲突摘要: 跳过的路径:1

C:> svn up --set-depth infinity“ D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3” 更新'D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3': 修订版为20950。

C:> svn up --set-depth infinity“ D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3 \” svn:E020024:“ D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3“的错误解决案例

C:> svn up --set-depth infinity'D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3' svn:E020024:解决“ D:\ Projects \ Development_SVN \ Project”的情况

C:> svn up --set-depth infinity'D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3 \' svn:E020024:解决“ D:\ Projects \ Development_SVN \ Project”的情况

解决方法

感谢您的指导。这是我需要做的:

my $folder = "D:\\Projects\\Development_SVN\\Project Hay\\Release\\Branches\\R2.3\\";
UpdateFolder($folder);

sub UpdateFolder {
my $SVNPath = $_[0];

    $SVNPath =~ s{(.+)\\\z}{\1};
    my $svnCmd = 'svn up --set-depth infinity';
    my $svnResp = `$svnCmd "$SVNPath" 2>&1`;

    if ($svnResp)
    {
        &main::logWriteAndPrint($svnResp);
    }
}

产生的输出:

Updating 'D:\\Projects\Development_SVN\Project Hay\Release\Branches\R2.3':
At revision 20940.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。