2016-09-07 38 views
0

運行它,我可以就好運行以下終端命令:但是終端命令的作品,而不是當我在螞蟻

security cms -D -i ../MyMobileProvision.mobileprovision > provision.plist 

,當我在螞蟻的確切同一目錄下運行,從ant腳本,終端聲明供應文件不存在,它爲provision.plist創建一個空文件,這將我的流程中的下一步搞砸了。螞蟻代碼看起來像這樣:

 <exec executable="security"> 
      <arg line="cms -D -i ../MyMobileProvision.mobileprovision > provision.plist" /> 
     </exec> 

我錯過了一些關於螞蟻如何工作?我並不擅長構建腳本,但是我可以使用../語法來導入屬性文件,所以我很困惑爲什麼相對路徑不適用於終端命令,否則它可以正常工作。

回答

1

在終端命令例如,片斷...

> provision.plist 

...是由您殼作爲重定向命令解釋。

Ant的任務<exec>不使用shell來執行命令。相反,> provision.plist未經修改就傳遞給security程序。

爲了得到你想要的,使用<exec>output屬性。 output是一個文件,其中<exec>將寫入輸出的名稱:

<exec executable="security" output="provision.plist"> 
    <arg value="cms" /> 
    <arg value="-D" /> 
    <arg value="-i" /> 
    <arg value="../MyMobileProvision.mobileprovision" /> 
</exec> 

在上述例子中,我已與一些<arg value="...">元素取代了<arg line="...">。從Ant documentation on Command-line Arguments推理:

強烈建議儘可能避免行版本。 Ant會嘗試以類似於(Unix)shell的方式拆分命令行,但可能會創建與您在某些情況下所期望的內容完全不同的內容。

+0

這工作完美!謝謝!從ant文檔中很難理解這樣的事情。向前走,我會把個別參數放在他們自己的標籤中。 –

+0

@Sly_Boots我很高興我的回答有幫助。請接受這個答案。 –