2016-09-07 5 views
0
개미

에서 실행할 때 나는 잘 다음 터미널 명령을 실행할 수 있습니다터미널 명령이 작동,하지만 내가

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

을 그러나, 나는 동일한 디렉토리에 개미 스크립트, 개미에서 실행할 때 , 터미널은 프로비저닝 파일이 존재하지 않는다고 주장하고 provision.plist에 대한 빈 파일을 생성합니다. 프로 시저는 프로 세스의 다음 단계를 망칩니다. 개미 코드는 다음과 같습니다 :

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

개미의 작동 방식에 대해 빠진 것이 있습니까? 나는 스크립트를 만들 때 전문가가 아니지만 ../../ 구문을 사용하여 속성 파일을 제대로 가져올 수 있으므로 상대 경로가 터미널 명령에 대해 작동하지 않는 이유가 혼란 스럽습니다. 터미널 명령 예에서

답변

1

, 스 니펫 ...

> provision.plist 

은 ... 리디렉션 명령과 쉘에 의해 해석됩니다.

개미의 <exec> 작업은 쉘을 사용하여 명령을 실행하지 않습니다. 대신 > provision.plist은 변경되지 않고 security 프로그램으로 전달됩니다.

output 속성을 <exec>으로 사용하십시오. 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 :

가능한 경우 회선 버전을 사용하지 않는 것이 좋습니다. 개미는 (유닉스) 쉘이하는 것과 비슷한 방식으로 명령 행을 분할하려하지만, 어떤 경우에는 예상했던 것과는 아주 다른 것을 만들 수 있습니다.

+0

완벽하게 작동했습니다. 고맙습니다! 개미 문서에서 이런 일을 꺼내기는 어렵습니다. 앞으로 나는 개별 args를 자신의 태그에 넣을 것이다. –

+0

@Sly_Boots 내 대답이 도움이 되었기 때문에 기쁩니다. 이 대답을 수락하십시오. –

관련 문제