我有以下脚本,它不断接受用户的输入,直到他/她输入某种形式的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发行版的答案)。
发布于 2017-07-09 07:23:09
因为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根据您的应用程序逻辑,您可以(显然)将其作为单独的case分支,如:"") break;;。
https://stackoverflow.com/questions/44991587
复制相似问题