Java 从Ant运行bash脚本并向其传递多个参数

Java 从Ant运行bash脚本并向其传递多个参数,java,bash,ant,exec,Java,Bash,Ant,Exec,我正在尝试从Ant构建文件运行以下命令: sh /home/myuser/scripts/run.sh -p=8888 -z=true /home/myuser/resources/mydir 到目前为止,这是我最好的尝试: <target name="run"> <exec executable="/bin/bash"> <arg line="/home/myuser/scripts/run.sh"/> <ar

我正在尝试从Ant构建文件运行以下命令:

sh /home/myuser/scripts/run.sh -p=8888 -z=true /home/myuser/resources/mydir
到目前为止,这是我最好的尝试:

<target name="run">
    <exec executable="/bin/bash">
        <arg line="/home/myuser/scripts/run.sh"/>
        <arg line="-p=8888"/>
        <arg line="-z=true"/>
        <arg line="/home/myuser/resources/mydir"/>
    </exec>
</target>

所以看起来Ant在我的参数周围插入了单引号。有没有办法禁用此行为?

我建议您尝试在详细模式下使用Ant运行任务-例如,在Ant命令行上传递
-v
。然后,您应该看到Ant如何将上述任务格式化为命令行


我注意到,您引用的命令是针对Bourne shell
sh
,但在您的exec任务中,您正在运行
bash
-这可能是造成差异的原因吗?

谢谢@martin clayton(+1)-请查看上面的更新,再次感谢。单引号插入日志消息中,以便您可以“看到”空白,它们实际上并不包含在命令运行中(这就是“不属于命令的一部分”消息试图说的)。如果使用/bin/sh而不是/bin/bash,会发生什么?
[exec] Current OS is Linux
[exec] Executing '/bin/bash' with arguments:
[exec] '/home/myuser/scripts/run.sh'
[exec] '-p=8888'
[exec] '-z=true'
[exec] '/home/myuser/resources/mydir'
[exec] 
[exec] The ' characters around the executable and arguments are
[exec] not part of the command.
[exec] Usage: <run> [options] <your dir>