2012-04-29 6 views
2

쉘 스크립트를 작성 중이거나보다 구체적으로 말해서 ZSH 기능을 사용해야하며 여러 가지 간단한 명령을 사용하여 git 저장소와 같은 상태를 확인합니다.쉘 스크립트가 '-'로 진행하지 않습니다.

그러나 특정 명령 하나에 많은 문제가 있습니다. 또 다른 유래 게시에서 난 자식 저장소의 루트 폴더 인쇄 명령을 발견 : 나는

$(git rev-parse --show-top-level) 

적절한 값이 반환을 실행하면, 내 실제 zsh을 인스턴스에서

git rev-parse --show-top-level 

을하고 모두가 잘 . 그러나 스크립트 내에서 이러한 접근 방식이 잘 작동하지 않습니다. 나는 약간의 문맥주지 : 이제

[ $(git status &>/dev/null) $? -eq "0" ] && { 
    git_name=$("git rev-parse --show-top-level") 
    echo $(eval $git_name) 
} 

나는 당신에 관하여 모른다, 그러나 이것은 (하지 첫 번째 줄을이 작업을 수행 할 수있는 잘못 방법이 날 것으로 보인다, 나는 괜찮아 그것으로). 이것의 출력은 대략 다음과 같습니다

command not found: git rev-parse --show-top-level 

그것이 내가이가 작성되어야한다 보인다 방법 :

[ $(git status &>/dev/null) $? -eq "0" ] && { 
    git_name=$(git rev-parse --show-top-level) 
    echo $git_name 
} 

이의 출력은 다음과 같습니다 종료 상태가

--show-top-level 

및 0

제 질문은 왜이 두 가지가 작동하지 않으며, 이것을 구현하는 올바른 방법은 무엇일까요? 내 추측으로는 공백 다음에 이중 대시 인수가 있고, 마지막 긴 인수가 명령 자체로 취급되고 있다는 점이 (적어도 두 번째 예에서는)하지만 내 직감의 정도입니다.

감사합니다.

답변

2

이를 시도해보십시오 git rev-parse 주위

[ $(git status &>/dev/null) $? -eq "0" ] && { 
    git_name=$(git rev-parse --show-toplevel) 
    echo $(eval $git_name) 
} 

이중 따옴표는 불필요 인수는 --show-toplevel하지 --show-top-level해야한다.

+0

환상적! 고마워요! –

관련 문제