我有一个将目录复制到远程服务器的任务。问题是目标文件夹包含"空格"符号。
<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'"
和许多其他的变体,但它没有帮助…
scp行被多次解析。如果这是一个独立的scp命令,我建议在所有空格之前使用双反斜杠。作为Ant配方的一部分,您可能需要三重反斜杠,但请尝试一下。
必须在每个空格前加上反斜杠:
<!-- Escaping the space character with a backslash character -->
<scp todir="${username}:${password}@${hostname}:/home/user/DIR HERE">
...
</scp>