从 ant 调用的 bash 脚本不起作用



首先,当我在 ant 之外调用它时,bash 脚本工作正常。以下是构建的相关部分.xml

<exec executable="/bin/bash" failonerror="true">
<arg value="-c" />
<arg value="script.sh" />
</exec>

以下是 bash 脚本 (script.sh) 中的相关行:

nc -l 8044 | tee ./nc-out.txt &

当我从 bash 调用 script.sh 时,nc-out 的内容.txt会填充发送到端口 8044 的数据。

我需要那里的和号。

当从 ant 调用 shell 脚本时,似乎创建了 nc-out.txt,但保持为空。

正常的重定向,例如:

nc -l 8044 > nc-out.txt & 

也不起作用..

任何见解都会有用!

谢谢!

当 ant exec 你的命令时,它的标准输入默认不绑定到任何东西,所以当你连接到侦听过程时netcat会立即退出,因为没有什么可以从 stdin 读取更多的东西。

由于您想在后台运行它,我假设您只想实现单向日志记录:您可以将 -d 参数添加到 netcat 中,告诉他不要从标准输入读取:

script.sh

#/bin/bash
netcat -d -l 8044 > nc-out.txt &

完全使用以下 ant 构建文件示例:

构建.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="script" name="bleh">
    <target name="script">
        <exec executable="/bin/bash" failonerror="true">
            <arg value="-c" />
            <arg value="./script.sh" />
        </exec>
    </target>
</project>

我建议将spawn="true"添加到您的exec中,以提供您正在创建自己的后台进程。

最新更新