java - Ant: 没有那个文件或目录

标签 java linux ant exec

我需要编写 ant 脚本来在 Linux 中执行一个文件,但在执行文件之前我需要执行设置文件。

在 putty 中,我习惯使用“../setup”,然后是“./executeme”

我用同样的方式编写了 ant 脚本

    <exec dir="${dir}" executable="/bin/sh">
        <arg value=". ./setup"/>
        <arg value="./executeme"/>
    </exec>

但它给出错误“/bin/sh: . ./setup: No such file or directory”。

还有人可以解释一下执行“./setup”和“. ./setup”之间的区别吗??

提前致谢。

最佳答案

您可以通过创建单行脚本来运行在交互式 session 中使用的命令序列,然后使用 -c 将其传递给 sh,如下所示:

<exec dir="${dir}" executable="/bin/sh">
    <arg value="-c"/>
    <arg value=". ./setup; ./executeme"/>
</exec>

您需要将这两个命令作为一个arg 传递,否则它们将被区别对待:第一个成为“脚本”,下一个成为该脚本的第一个参数。或者,如果你愿意,以上相当于运行

sh -c ". ./setup; ./executeme"

而对于单独的 arg 元素,您正在运行

sh -c ". ./setup" ./executeme

这可能不会出现失败,除非 setup 对其参数列表执行某些操作,但它不会运行 executeme

关于java - Ant: 没有那个文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11748505/

相关文章:

java - 使用类加载器 AntClassLoader 无法找到 Taskdef 类 com.temp.install.common.action.UserInstallDirRule

java - Apache Ant - 在文件集中包含父目录

java - 尝试将Spring MVC集成到现有的Jersey API中,每次都404

java - 将 Infinispan 配置为 Hibernate 的远程二级缓存

linux - 公里数 : VT switcher

c++ - 与 ‘operator<<’ 不匹配(可能是因为我的 c++/gcc 版本?)

java - 从 SOAP wsdl 生成客户端 jar

java - 如何将 derby 更改为 READ/WRITE 模式

java - 调用Applet时出现ClassNotFound异常

linux - 在 Ubuntu 中安装 Torch 时出现 CMake 错误