如何在Git钩子中使用“select”?

时间:2013-07-12 06:38:24

标签: git shell githooks

我想使用Git pre-commit钩子。我修改了默认的pre-commit文件,我的钩子运行良好。

现在我想在预提交中添加一些选项,如下代码:

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,它按预期工作。

如何在Git钩子中使用select

1 个答案:

答案 0 :(得分:5)

预提交挂钩在stdin重定向的情况下运行(在本例中为/ dev / null),因此您的“select”语句会尝试读取并立即获得EOF。您可以通过重定向输入来解决此问题:

exec < /dev/tty
select之前

,或在< /dev/tty部分之后添加done