管道的蚂蚁运行命令


问题内容

我必须java -jar test.jar page.xml | mysql -u user -p base
在ant中执行command:所以我尝试了这个任务:

<java jar="test.jar" fork="true">
  <arg line="page.xml | mysql -u user -p base"/>
</java>

但是我对管道有个异议-“ |” :

 java.lang.IllegalArgumentException: Input already set; can't set to |

所以,这就是问题所在:)


问题答案:

管道(|)仅可用于Shell脚本。您将其作为参数传递给Java进程。

因此,您需要执行一个Shell脚本。您可以通过执行(说)bash -c并将上面的内容作为shell语句传递来做到这一点(尽管是 内联的
,您可以编写一个单独的脚本文件,但这似乎有点麻烦)

  <exec executable="bash">
    <arg value="-c"/>
    <arg line="java -jar test.jar page.xml | mysql -u user -p base"/>
  </exec>