接受bash脚本中的换行符

时间:2017-07-08 23:15:32

标签: bash scripting

我有以下脚本持续接受用户输入,直到他/她输入某种形式的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发行版的答案)。

1 个答案:

答案 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;;