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

时间:2018-03-02 16:14:17

标签: bash console newline

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

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}

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用-n的{​​{1}}标记,它允许您从用户接收单个字符,而无需键入 Enter 并跳转到下一行。

read