read ( 英文名称:read ) 是 Linux / FreeBSD 系统中 Shell 的一个内置命令,它的功能时从标准输入读取数据并赋值给变量。

本文将为你介绍 read 命令的使用方法,使你对 read 命令具有基本的了解,方便你使用该命令读取数据,并赋值给变量。

read 命令语法结构

如下给出 read 命令的基本语法结构:

read [-options] [variable_name(s)]

语法结构中组成部分的解释说明:

  • -options:读取数据时使用的控制选项
  • variable_name(s):用于赋值的变量名称,多个变量时使用分隔符自动拆分,默认分隔符为:空格/制表符

命令的返回值说明:

  • 成功读取:返回状态码 0
  • 超时/EOF:返回非零状态码
  • 无变量指定时:内容存储在 REPLY 系统变量中

特殊变量

变量 说明
REPLY 未指定变量时的默认存储位置
IFS 输入字段分隔符(默认:空格/制表符/换行)
$? 读取操作的状态返回值

read 命令使用示例

1. 直接读取数据赋值变量

使用命令的默认配置(即:不提供选项),提供变量名称,读取内容赋值给变量:

read username

执行命令后,等待用户输入内容,按回车结束输入内容。

验证输入的内容:

echo $username

2. 设置输入超时

可以使用 -t 选项设置输入时间的限制,最好配合 -p 选项,来提示设置的超时信息:

read -t 10 -p "10秒内输入验证码:" code

如上示例:设置超时间为 10 秒,默认的单位为秒,并使用 -p 设置了提示信息。

3. 隐藏输入密码

使用 -s 选项能够隐藏输入的信息:

read -s -p "输入密码:" password

4. 赋值多个变量

一次赋值多个变量,变量使用空格Tab 分割,输入的内容也使用空格Tab 分割,按换行结束输入内容:

read first_name last_name

5. 限制输入字符数量

使用 -n 选项,限制输入字符的数量:

read -n 5 -p "输入5字符ID:" user_id

如上示例:最多只能输入 5 个字符,输入 5 个字符后自动结束输入;如果要提前结束输入,按 Enter 键。

6. 自定义分隔符

使用 IFS 环境变量,自定义输入内容的分隔符:

IFS="," read city country <<< "Paris,France"

注意:不能自定义变量的分隔符。

7. 读取内容到数组

使用 -a 选项后,提供的一个变量会作为数组变量,把所有内容赋值给数组元素:

read -a colors

输入内容,以默认分隔符分割的一个段为一个数据。

read 命令选项详解

如下给出 read 命令选项的详细解释说明:

选项 说明 兼容性
-a array 读取内容赋值给数组 Bash / Zsh / Ksh
-d delim 设置结束分隔符(默认为换行符) 所有 Shell
-e 使用 Readline 库 Bash
-i text 提供默认输入文本 Bash
-n nchars 读取指定数量的字符数后结束 所有 Shell
-N nchars 精确读取 n 个字符,输入的是结束符,也会作为输入数据 Bash
-p prompt 显示提示文本 所有 Shell
-r 禁用反斜杠转义 所有 Shell
-s 隐藏输入的内容 所有 Shell
-t timeout 设置超时秒数 所有 Shell
-u fd 从文件描述符读取内容 所有 Shell

结语

本文全面的介绍了 read 的语法结构及其功能,并给出了 read 命令的具体使用示例,相信你能够对 read 命令有个基本的了解,并帮助你正确的使用 read 读取内容并赋值变量。 read 命令可以在 Linux 各发行版和 FreeBSD 系统中使用,基本功能是相同的。