Husky:pre-commit钩子启动bash脚本,但不等待用户选择
当我进行提交时,bash脚本将启动,但不会等待用户选择 .huskyrc文件Husky:pre-commit钩子启动bash脚本,但不等待用户选择,bash,npm,husky,Bash,Npm,Husky,当我进行提交时,bash脚本将启动,但不会等待用户选择 .huskyrc文件 { "hooks": { "pre-commit": "bash scripts/pre_commit.sh" } } pre_commit.sh文件 #!/bin/bash PS3='Please enter your choice: ' options=("X" "Y" &q
{
"hooks": {
"pre-commit": "bash scripts/pre_commit.sh"
}
}
pre_commit.sh文件
#!/bin/bash
PS3='Please enter your choice: '
options=("X" "Y" "Z")
select opt in "${options[@]}"
do
case $opt in
"X")
echo "works"
exit 0
;;
"Y")
npm run test
exit 0
;;
"Z")
echo "Option Z";
exit 0
;;
*) echo "invalid option $REPLY";;
esac
done
exit 0
答案是在PS3之前添加=“请输入您的选择:” 允许我们读取下面的用户输入,将标准输入分配给键盘
if[-t1];然后
执行
答案是在PS3之前添加=“请输入您的选择:”
允许我们读取下面的用户输入,将标准输入分配给键盘
if[-t1];然后
执行
虽然我从未使用过git预提交钩子,但我可以想象,在运行钩子时,git会将stdin绑定到tty之外的其他东西。至少,您应该验证情况是否如此,如果不是,则抛出一条错误消息,即,[[-t1]]| | echo not A TERMINAL
虽然我从未使用过git预提交钩子,但我可以想象在运行钩子时git会将stdin绑定到您的tty之外的其他东西。至少,您应该验证这种情况,如果不是,则抛出一条错误消息,即[[-t1]]| | echo not A TERMINAL
if [ -t 1 ]; then
exec < /dev/tty
fi