# user input a here
vared -p "input something" -c a
case $a { ([y|'\n']) echo something;; }
行不通,有人可以提供见解吗?
我正在尝试测试用户输入,如果包含y
或enter
- 换行符,则回显某些内容。
编辑:
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
不使用-k
orvared
并希望检测用户何时按下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