我有一个将目录复制到远程服务器的任务。问题是目标文件夹包含“空格”符号。
<scp todir="${admin_name}:${admin_password}@${admin_hostname}:/home/user/DIR HERE" trust="true">
<fileset dir="${DIR}/">
<include name="server/**"/>
</fileset>
结果我得到了:
[printStackTrace] /home/myuser/install/install.xml:39: server indicated an error: scp: ambiguous target
[printStackTrace] at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:482)
[printStackTrace] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:443)
当路径中没有“空格”时,它可以正常工作。 我试过了:
todir="${admin_name}:${admin_password}@${admin_hostname}:/home/user/DIR\ HERE"
todir="'${admin_name}:${admin_password}@${admin_hostname}:/home/user/DIR\ HERE'"
todir="'${admin_name}:${admin_password}@${admin_hostname}:/home/user/DIR HERE'"
todir="${admin_name}:${admin_password}@${admin_hostname}:'/home/user/DIR HERE'"
和许多其他变种,但它没有帮助...
答案 0 :(得分:0)
scp行被多次解析。如果这是一个独立的scp命令,我建议在所有空格之前使用双反斜杠。当Ant配方的一部分时,您可能需要三倍反斜杠,但要试一试。
答案 1 :(得分:0)
您必须在每个空格前添加反斜杠\
:
<!-- Escaping the space character with a backslash character -->
<scp todir="${username}:${password}@${hostname}:/home/user/DIR\ HERE">
...
</scp>