Ant 中的 Exec 命令只执行第一个命令

Exec command in Ant only executes first command

我想列出目录 dir/bin 中每个脚本的权限。但是下面的命令只在脚本所在的目录中运行 "ls",而不是 dir/bin 中的每个脚本。由于 script.xml 在 maindir 中,它只是在 maindir 中执行 ls

有2个问题:

  1. 正在执行 ls -l 而不仅仅是行中的第一个命令
  2. 在正确的目录而不是脚本所在的目录中执行ls -l

目录结构:

   - maindir
     - dir
        -bin
          -test.sh
          -con.py
     - script.xml

下面的代码被调用"script.xml":

<foreach param="dirSc" in="dir/bin">
    <exec executable="/bin/sh"
        resultproperty="returncode"     
        output="dir/output.txt">
        <arg value="-c" />
        <arg line="ls -l ${dirSc}" />
   </exec>
<foreach>

我建议对一系列文件使用 apply task 到 运行 命令。

例子

├── build.xml
└── dir
    └── bin
        ├── con.py
        └── test.sh

产生以下输出

scan:
    [apply] -rw-r--r-- 1 mark mark 1 Jun 23 23:30 ../dir/bin/con.py
    [apply] -rw-r--r-- 1 mark mark 1 Jun 23 23:29 ../dir/bin/test.sh

build.xml

<project name="demo" default="scan">

  <target name="scan">
    <apply executable="ls">
      <arg value="-l"/>
      <fileset dir="dir"/>
    </apply>
  </target>

</project>