Menú Bash Option en git hook

Me gustaría presesnt un menu bash cuando un desarrollador cambia de twigs. He creado un gancho post-checkout como este

#!/usr/bin/env bash options=("Quit" "Option 1" "Option 2" "Option 3" ) optionsprompt='Please enter your choice: ' sub1=("Option 1 sub 1" "Option 1 sub 2") sub1prompt='Please enter your choice: ' PS3=$optionsprompt select opt in "${options[@]}" do case $opt in "Quit") break ;; "Option 1") echo "you chose choice 1" PS3=$sub1prompt select sub1opt in "${sub1[@]}" do case $sub1opt in "Option 1 sub 1") echo "you chose choice 2" ;; "Option 1 sub 2") echo "you chose choice 2" ;; esac done ;; "Option 2") echo "you chose choice 2" ;; "Option 2") echo "you chose choice 3" ;; *) echo invalid option;; esac done 

Cuando ejecuto este gancho manualmente

 ./post-checkout 

me presenta un menu como se esperaba Pero cuando este enlace se ejecuta después de cambiar de twig, no espera a que alguien ingrese un valor, pero luego de presentar el menu, el script finaliza.

¿Alguna idea sobre cómo resolver esto?

Por alguna razón, post-checkout tiene su input estándar conectada a /dev/null , por lo que el select inmediatamente no puede leer ninguna input. (No puedo encontrar esto documentado en ninguna parte, pero pude confirmarlo usando strace .) Una solución es simplemente networkingirigir la input estándar desde la terminal:

 select opt in "${options[@]}" do ... done < /dev/tty