O problema é que a função read
do zsh usa opções diferentes das do bash. No bash, read -p
especifica um prompt; em zsh, diz para ler de um coprocess (que não existe). Você precisa mudar para a sintaxe zsh, que coloca o prompt após a variável ler (delimitada por um ponto de interrogação):
read "choice?Do you want to use the last commit message as pull-request message. Y or N? "
...
read -p "message?Enter message: "
Além disso, eu faria duas outras recomendações (para bash e zsh): primeiro, use nomes de variáveis em minúsculas ou minúsculas; há um grande número de nomes de variáveis all-caps com significado especial para o shell, sistema, etc (e eles não são os mesmos entre bash e zsh), e é fácil reutilizar acidentalmente um deles com o estranho conseqüências.
Segundo, construindo o comando em uma variável e, em seguida, eval
ing não é seguro (em bash ou zsh). Ou use uma matriz , ou apenas coloque a mensagem (e apenas a mensagem ) em uma variável e execute o comando diretamente:
if ...
message=$commit
else ...
read message
fi
echo "Creating pull-request against $1 branch with message: $message"
hub pull-request -b "$1" -m "$message"