从没有换行的键盘读取数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从没有换行的键盘读取数据相关的知识,希望对你有一定的参考价值。

例如,我有一个强制用户输入正确数据的任务

echo -e "Enter digit (choices: 2, 3, 4, 5)c"
tput sc
read -p ": " DIGIT

while ! [[ ${DIGIT:0:1} =~ ^[[:digit:]]$ ]]; do
    tput rc; tput cuu1
    echo -e " [incorrect, try again or CTRL-C for exit]c"
    read -p ": " DIGIT
done

这是我需要它的方式除了一个,如果用户输入不正确的值 - 不是数字,然后底部出现空行。

$ ./i.sh
Enter digit (choices: 2, 3, 4, 5) [incorrect, try again or CTRL-C for exit]:
{empty line here}

是否有可能输入字符串总是停留在一行而没有跳起来?

更新:用户的输入可以是工作版本中的任何长度

和测试的正则表达式也可以。

答案

您可以使用-nread标志,它允许您从用户接收单个字符,而无需输入Enter并跳转到下一行。

echo -e "Enter digit (choices: 2, 3, 4, 5)c"
tput sc

while true; do
    read -n 1 -p ": " DIGIT
    if [[ ${DIGIT:0:1} =~ ^[[:digit:]]$ ]]; then
        break
    fi
    tput rc;
    echo -e " [incorrect, try again or CTRL-C for exit]c"
done

echo

以上是关于从没有换行的键盘读取数据的主要内容,如果未能解决你的问题,请参考以下文章

java如何把有换行的字符串弄到一行显示?

SqlServer查询数据行中是不是有换行

使用Flow读取Excel表格碰到列标题有换行,单元格中有空格的处理方法

换行的文字复制到excel,怎么变成不换行

关于html里面textarea换行的问题

换行的展示