2013-07-12 14 views
3

Git을 사용하고 싶습니다 pre-commit 후크. 기본 파일 인 pre-commit을 수정했는데 내 후크가 잘 작동합니다.Git hook에서 "select"를 어떻게 사용할 수 있습니까?

select run in "yes" "no" 
do 
case $run in 
"yes")UnitTest;; 
"no")echo "Ignore Unit Test!";; 
*)echo "other";; 
esac 
done 

을하지만 git commit 실행할 때, 출력 메시지는 스크립트가 떠나지 않아

Run the Unit Test Case? 
1) yes 
2) no 
#? 

입니다 :

지금은 몇 가지 옵션을 추가하려면이 코드처럼 사전 저지 나에게 옵션을 입력 할 수있는 기회; 후크가 즉시 종료되는 것처럼 보입니다. 다른 스크립트에서 pre-commit을 호출하려고 시도했으며 예상대로 작동합니다.

그래프트 훅에서 select을 어떻게 사용할 수 있습니까?

답변

5

pre-commit 후크는 stdin이이 경우/dev/null로 리디렉션되어 실행되므로 "select"문은 읽기를 시도하고 즉시 EOF를 얻습니다. select 전에

exec < /dev/tty 

를, 또는 done 일부 후에 < /dev/tty을 추가 : 당신은 리디렉션 입력하여이 문제를 해결할 수 있습니다.

+0

감사합니다. – vane