2015-01-26 3 views
0

그래서 git를 호출하기 전후에 AppleScript를 실행하고 싶습니다. (아래의 AppleScript는 아니지만 다른 AppleScript가 필요합니다.) 내가 겪고있는 문제는 git 명령이 변수 수를 가지고있어서, 단지 $1을 사용하여 첫 번째 코드를 전달할 수 없다는 것입니다. 전달 된 번호 여야합니다. 여기에있는 코드가 있습니다. 내 .bash_profile :bash 함수를 통해 다른 명령어로 자식을 감싸기.

function git() { 
    osascript -e 'display alert "before git command"'; 
    git "[email protected]"; 
    osascript -e 'display alert "after git command"'; 
} 

예상되는 결과는 AppleScript로 실행의 첫 번째 조각, 자식 인수의 어떤 양이 제공되었습니다으로 실행한다는 것입니다, 다음 AppleScript로 실행의 마지막 조각. 실제로 일어나는 일은 첫 번째 아플리케 스크립트가 무한정 반복 실행된다는 것입니다. 문제는 그 후 "[email protected]" 일 것 같아요. From what I understand을 사용하면 "[email protected]"은 모든 인수를 덤프합니다. 그러나 첫 번째 부분의 applescript는 무한 루프에서 실행됩니다. 뭐라 구요?

+0

위의 코드 스 니펫에서 이러한 현상이 발생합니까? – dramzy

+0

@RespectMyAuthoritah 예 –

답변

1

git의 이름을 바꿔 치기했습니다. 귀하의 기능은 git이며 귀하는이 기능에서 git으로 전화하십시오. 축하합니다. 재귀가 있습니다.

중간에 git 바이너리를 호출하도록 쉘에게 알릴 필요가 있습니다.

어느 등 command git 또는 /full/path/to/git,

\git가 사용 (하지만 이것은 단지 별칭이 아닌 기능을 피할 생각한다).

또한 @ryenus가 지적한 바와 같이 주석에 있습니다. env 바이너리 /usr/bin/env 또는 /bin/env도이 용도로 사용할 수 있습니다 (다만 기능을 피하는 것 이상을 수행하고 추가 외부 프로세스를 생성해야 함).

+1

@ryenus 옵션도 있지만 "더 나은"이라고 말하지는 않습니다. 'env'는 뚜렷한 목적을 가진 외부 바이너리입니다. 그러나 이것은 정확히'command' (셸 내장형)를위한 것입니다. –

+0

@BrianTkatch'command'의 bash 맨 페이지 정의와'env'의 맨 페이지를 읽으십시오. 그것들은 다른 (그러나이 경우 중복되는) 것들을합니다. 외부 대 내장에 관한 비트는 단지 시간이다. 내장 도구는 외부 도구보다 성능이 좋지만 두 번째/세 번째/기타 등을 생성 할 필요가 없기 때문에 외부 도구보다 성능이 좋습니다. 방법. 단순한 경우에는 문제가되지 않지만/등은 반복됩니다. 커다란 데이터로 거대해질 수 있습니다. –

+0

@EtanReisner는 동의합니다.이 경우 명령은 약간 더 좋으며, 특히'env'와 관련된 여분의 프로세스에 관해서는 더 좋습니다. – ryenus

관련 문제