Zsh: test newline no caso

0
# user input a here
vared -p "input something" -c a
case $a { ([y|'\n']) echo something;; }

não funciona, alguém pode dar uma ideia?

Estou tentando testar as entradas do usuário que, se contiverem y ou enter - newline, fazem alguma coisa.

EDITAR:

set | grep IFS
IFS=$' \t\n\C-@'
    
por Tuyen Pham 13.09.2018 / 11:35

1 resposta

1

Você não está dizendo como está recebendo informações do usuário.

com read :

read -k 'answer?Are you OK? '
case $answer in
  (y | Y | $'\n') echo 1;;
  # or ([$'yY\n']) echo 1;;
  (*)         echo 2;;
esac

Mas se você estiver usando read sem -k ou vared e quiser detectar quando o usuário pressiona Enter sem inserir nenhuma resposta, é quando você deseja testar um valor vazio:

answer=; vared -p 'Are you OK? ' answer
case $answer in
  (y | Y | "") echo 1;;
  # or ([yY] | "") echo 1;;
  (*)         echo 2;;
esac

Ou semeia a resposta com y (embora o usuário tenha que fazer Backspace N para dizer não ):

answer=y; vared -p 'Are you OK? ' answer
case $answer in
  (y | Y) echo 1;;
  (*)     echo 2;;
esac
    
por 13.09.2018 / 11:45

Tags