我有以下脚本持续接受用户输入,直到他/她输入某种形式的y*
或Y*
。
while true; do
read -p "Are you ready? " yn
case $yn in
[Yy]* ) break;;
[Nn]* ) ;;
* ) echo "Please answer yes or no.";;
esac
done
但是,当用户只按enter
时,我想打破while循环。我尝试使用\n
,\r
和\r\n
,但这些似乎不是正确的模式。
我正在使用Cygwin,如果这有所不同(虽然我也想知道像Ubuntu这样的Linux发行版的答案)。
答案 0 :(得分:4)
由于read
会删除换行符,因此您必须匹配空字符串""
:
#!/bin/bash
while true; do
read -p "Are you ready? " yn
case "$yn" in
[Yy]*|"") break;;
[Nn]*) ;;
*) echo "Please answer yes or no.";;
esac
done
根据您的应用程序逻辑,您可以(显然)将其作为单独的案例分支,例如:"") break;;
。