1.13 以不按回车键的方式读取字符“n”

read是一个重要的Bash命令,用于从键盘或标准输入中读取文本。我们可以使用read以交互的形式读取来自用户的输入,不过read能做的可远不止这些。接着我们来演示read命令的一些重要选项。

1.13.1 预备知识

任何一种编程语言的输入库大多都是从键盘读取输入;但只有当回车键按下的时候,才标志着输入完毕。在有些重要情形下是没法按回车键的,输入结束与否是基于字符数或某个特定字符来决定的。例如,在一个游戏中,当按下 + 键时,小球就会向上移动。那么若每次都要按下 + 键,然后再按回车键来确认已经按过 + 键,这就显然太低效了。read命令提供了一种不需要按回车键就能够搞定这个任务的方法。

1.13.2 实战演练

下面的语句从输入中读取n个字符并存入变量variable_name

  1. read -n number_of_chars variable_name

例如:

  1. $ read -n 2 var
  2. $ echo $var

read还有很多其他选项。让我们来看看它们。

用不回显(non-echoed)的方式读取密码:

  1. read -s var

显示提示信息:

  1. read -p "Enter input:" var

在特定时限内读取输入:

  1. read -t timeout var

例如:

  1. $ read -t 2 var
  2. #在2秒钟内将键入的字符串读入变量var

用定界符结束输入行:

  1. read -d delim_char var

例如:

  1. $ read -d ":" var
  2. hello: #var被设置为hello