我正在Phing中编写一个构建脚本,并希望有一个if语句来测试目录中是否存在具有给定扩展名的文件(在本例中为.sql文件)。我尝试使用<available>
执行此操作,如下所示,没有运气(<then>
永远不会被执行。任何人都有任何想法?
<if>
<available file="${build.pendingsql}/*" type="file" extension="sql" />
<then>
<!-- Do stuff -->
</then>
</if>
答案 0 :(得分:1)
你可以做那样的事情(根据你的确切需要调整它,在当前的drectory中运行):
<?xml version="1.0" encoding="UTF-8"?>
<project name="test" default="check">
<target name="check">
<exec checkreturn="true" command="ls *.sql" outputProperty="list"/>
<if>
<equals arg1="${list}" arg2="" />
<then>
<echo msg="not found"/>
</then>
<else>
<echo msg="found ${list}"/>
</else>
</if>
</target>
</project>
答案 1 :(得分:0)
在我的Mac上,我最终使用了以下内容:
<!-- Are there sql files in pending -->
<exec checkreturn="false" dir="${build.pendingsql}" command="ls *.sql" outputProperty="list"/>
<echo msg="${list}"/>
<if>
<equals arg1="${list}" arg2="ls: *.sql: No such file or directory" />
<then>
<echo msg="No SQL patches found"/>
</then>
<else>
<echo msg="SQL patches found"/>
</else>
</if>
Bolek发布的解决方案的主要变化是,检查退出&gt; 0并将等于测试更改为&#34; ls:* .sql:没有这样的文件或目录&#34; 。我意识到这有点hacky并且可能会中断(基于语言/系统输出不同的&#34;没有这样的...&#34;消息)但它对我有用。