Apache ant无法运行bash脚本

时间:2018-01-16 18:53:29

标签: bash ant

我有一个名为alarm.sh的简单测试脚本。它看起来像:

#!/bin/bash

cust_func(){
    sleep 10
    echo "Sleep $1 times..."
}


for i in {1,2,3,4,5}
do
    cust_func $i &
done
echo "script end"

如果我使用./alarm.sh运行脚本,它将以并行方式按预期运行并生成如下结果:

Sleep 2 times...
Sleep 3 times...
Sleep 1 times...
Sleep 4 times...
Sleep 5 times...
script end

但是我需要通过apache ant运行脚本,看起来脚本已经运行但是部分结果丢失了。 apache ant目标:

<target name="TodAlarmsDryRun" depends="build">
        <exec executable="/bin/bash" failonerror="true">
            <arg value="${output.dir}/bin/alarm.sh" />
        </exec>
</target>

使用apache ant生成的结果:

script end

你可以看到所有的睡眠信息都在误导。

我怀疑蚂蚁没有正确使用bash脚本。特别是shell脚本具有并行功能。因为如果我删除并行关键字&,它可以显示结果。但它没有以并行方式运行。有没有人对此有任何想法?

1 个答案:

答案 0 :(得分:0)

您正在从当前shell分离cust_func的执行,因此它在不同的shell中执行,这就是输出丢失的原因。 您可以将输出重定向到文件,在脚本完成后读取

 cust_func $i >> cust_func.log &