Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Husky:pre-commit钩子启动bash脚本,但不等待用户选择_Bash_Npm_Husky - Fatal编程技术网

Husky:pre-commit钩子启动bash脚本,但不等待用户选择

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

当我进行提交时,bash脚本将启动,但不会等待用户选择

.huskyrc文件

{
  "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