Zsh:测试换行符以防万一

Zsh:测试换行符以防万一
# user input a here
vared -p "input something" -c a
case $a { ([y|'\n']) echo something;; }

行不通,有人可以提供见解吗?

我正在尝试测试用户输入,如果包含yenter- 换行符,则回显某些内容。

编辑:

set | grep IFS
IFS=$' \t\n\C-@'

答案1

您没有说明如何获取用户输入。

read

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

但是,如果您read不使用-korvared并希望检测用户何时按下Enter而不输入任何答案,那么您就需要测试空值:

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

或者用y(尽管用户必须BackspaceN):

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

相关内容