I want to list the permission of every script in directory dir/bin
. But the below command only runs "ls"
in the directory where the script is with below code rather than every script in dir/bin
. Since script.xml
is there in maindir, it just does a ls
inside maindir.
There are 2 problems:
- Performing
ls -l
& not just the 1st command in the line - Performing
ls -l
in right directory instead of directory where the script is.
The directory structure:
- maindir - dir -bin -test.sh -con.py - script.xml
Below code is called “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>
Advertisement
Answer
I suggest using the apply task to run commands against a series of files.
Example
├── build.xml └── dir └── bin ├── con.py └── test.sh
Produces the following output
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>