1

我将一个包含大量 shell 脚本的文件夹交付给 unix,使用

<scp todir="${user.id}:${user.pwd}@${host.name}:${destination}" verbose="true" port="${host.port}" trust="true" failonerror="true">
        <fileset dir="${source.dir}">
            <include name="**" />
            <exclude name=".project"/>
            <exclude name=".svn"/>
            <exclude name="temp"/>
            <exclude name="jsch_build.xml"/>
        </fileset>
    </scp>

然后我得到一个错误响应

:/bin/sh^M: 错误的解释器: 没有这样的文件或目录。

我知道这是由代码格式引起的。一种解决方案是设置 ff=unix,但我需要一一处理这些脚本。并且 unix 机器上没有安装 dos2unix。

有谁能帮我解决这个问题吗?谢谢!

4

1 回答 1

0

有一个 ANT fixclrlf任务可用于在将文件复制到远程位置之前修复文件。

也可以将其用作filterchain的一部分。

<copy todir="${staging.dir}">
  <fileset dir="${source.dir}">
    <include name="**" />
    <exclude name=".project"/>
    <exclude name=".svn"/>
    <exclude name="temp"/>
    <exclude name="jsch_build.xml"/>
  </fileset>
  <filterchain>
    <fixcrlf eol="lf" eof="remove"/>
  </filterchain>
</copy>

<scp todir="${user.id}:${user.pwd}@${host.name}:${destination}" verbose="true" port="${host.port}" trust="true" failonerror="true">
  <fileset dir="${staging.dir}"/>
</scp>
于 2013-09-13T05:35:18.690 回答