Командата Exec в Ant изпълнява само първата команда

Искам да изброя разрешенията на всеки скрипт в директория dir/bin. Но командата по-долу изпълнява само "ls" в директорията, където е скриптът с код по-долу, а не всеки скрипт в dir/bin. Тъй като script.xml е там в maindir, той просто прави ls вътре в maindir.

Има 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>

person fscore    schedule 23.06.2015    source източник
comment
foreach не е стандартна ANT задача. Част от разширението ant-contrib на трета страна   -  person Mark O'Connor    schedule 24.06.2015


Отговори (1)


Предлагам да използвате задачата за прилагане за изпълнение на команди срещу поредица от файлове.

Пример

├── 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>
person Mark O'Connor    schedule 23.06.2015