2016-08-09 2 views
1

재미있는 것이있는 경우에만 git status의 출력을 표시하는 bash에서 명령을 실행하고 싶습니다. 다른 말로하면 : 모든 것이 괜찮 으면 명령을 인쇄하는 것을 원하지 않습니다. 기본적으로 나는 실행하여이 작업을 수행 할 수 있습니다 :bash의 전달 종료 코드 인 경우

if [[ $(git status -s) ]]; then git status; fi 

트릭은 여기 뭔가 흥미가있는 경우 -s 플래그는 아무것도 출력, 그래서 내가에 :-)

유일한 단점 원하는 것을 정확히 않는다는 것입니다 Git 디렉터리가 아닌 디렉터리에서이 코드를 실행하면 0이 아닌 종료 코드를 얻지 못한다는 것입니다. git status 또는 git status -s을 직접 실행하면 모두 종료 코드 128과 함께 실패합니다. 그러나 if에서이 작업을 수행하는 즉시 종료 코드는 0입니다.

종료 코드가 전달되도록 스크립트를 향상 시키려면 어떻게해야합니까?

+0

는'자식의 상태가 무엇 종료 코드를 제공 -s'는 무엇입니까? – 123

+0

'0'을 반환하지만 출력 자체는 비어 있습니다. –

답변

1

[[ 너무 내에 종료 상태 검사를 수행합니다

if [[ -n $(git status -s 2>/dev/null) ]]; then git status; fi 
+0

또는 단지''git status -s 2>/dev/null; 그러면 git status' – 123

+0

@ 123 그건 계획 이었지만 OP는 출력 문자열을 확인하려고합니다 .. – heemayl

+0

'git status -s'는 그런데 관심이 생겼습니까? – 123

1

단지는/dev/null로 리디렉션 확인 출력이 비어 있거나없는 경우 :

[ -n "$(git status -s 2>/dev/null)" ] && git status 

git status을 수행합니다 git status -s 명령이 성공적으로 실행되고 그 결과는 man test에 따라 비어 있지 않습니다.

-n STRING 
      the length of STRING is nonzero 
+0

불행히도,이 기능이 작동하지 않습니다. 올바르게 종료 코드를 전달하지만 볼 재미가없는 경우 출력을 억제하지 않습니다. –

+0

@GoloRoden 당신 말이 맞아요, 내가 업데이 트했습니다. – fedorqui

1

당신은 git하지의 경우 디렉토리를 rev-parse를 사용할 수 있습니다 흥미로운 아무 일도하지 않은 경우

git rev-parse 2>/dev/null && { git status -s || git status; }