Linux read命令详解

Linux read命令详解教程

Linux 中的 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量。

Linux read命令详解

功能

从标准输入中读取一行。

语法

read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

参数

参数 描述
-a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。
-d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。
-p 后面跟提示信息,即在输入前打印提示信息。
-e 在输入的时候可以使用命令补全功能。
-n 后跟一个数字,定义输入文本的长度,很实用。
-r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。
-s 安静模式,在输入字符时不再屏幕上显示,例如 login 时输入密码。
-t 后面跟秒数,定义输入字符的等待时间。
-u 后面跟 fd,从文件描述符中读入,该文件描述符可以是 exec 新开启的。

说明

read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。

Linux read命令常用实例

实例

实例 描述
read varname 将标准输入的值赋值给 varname 变量
read -p “promot” varname 给出输入提示
read -t secs -p “promot” varname 等待 secs 秒后,退出
read -n1 -p “promot” varname 限制只输入一个字符
read -s -p “promot” varname 输入不显示在终端,一般用于输入敏感信息
read -d ‘/’ 指定读取结束的分隔符,不是回车

说明

read 命令常用于 shell 脚本中。

读取到变量

语法

read varname

案例

我们使用 read 命令,读取标准输入,并赋值给变量 varname,具体命令如下:

read haicoder

运行后,终端输出如下:

102_Linux读取标准输入read命令详解.png

我们看到,我们使用了 read 命令,读取标准输入,现在,在等待用户输入,我们输入任意字符串,输入完成后,按下回车,运行后,终端输出如下:

103_Linux读取标准输入read命令详解.png

现在,我们使用 echo 命令,输出变量 haicoder 值,具体命令如下:

echo $haicoder

运行后,终端输出如下:

104_Linux读取标准输入read命令详解.png

我们看到,变量 haicoder 的值就是我们输入的值。

给出输入提示

语法

read -p "promot" varname

案例

我们使用 read 命令,读取标准输入并给出提示,并将输入结果赋值给变量 varname,具体命令如下:

read -p "Please input website: " haicoder

运行后,终端输出如下:

105_Linux读取标准输入read命令详解.png

我们看到,我们使用了 read 命令,读取标准输入并且给出了输入提示,现在,在等待用户输入,我们输入任意字符串,输入完成后,按下回车,运行后,终端输出如下:

106_Linux读取标准输入read命令详解.png

现在,我们使用 echo 命令,输出变量 haicoder 值,具体命令如下:

echo $haicoder

运行后,终端输出如下:

107_Linux读取标准输入read命令详解.png

我们看到,变量 haicoder 的值就是我们输入的值。

等待指定秒后退出

语法

read -t secs -p "promot" varname

案例

我们使用 read 命令,读取标准输入并给出提示,同时,我们通过了 t 参数,设置等待 5 秒后退出,并将输入结果赋值给变量 varname,具体命令如下:

read -t 5 -p "Please input website: " haicoder

运行后,终端输出如下:

108_Linux读取标准输入read命令详解.png

此时,我们一直没有输入,等待 5 秒后,自动退出了,如下图所示:

109_Linux读取标准输入read命令详解.png

我们看到,我们在 5 秒内没有输入,自动退出了。

限制字符个数

语法

read -n1 -p "promot" varname

案例

我们使用 read 命令,读取标准输入并给出提示,同时限定输入的字符个数,并将输入结果赋值给变量 varname,具体命令如下:

read -n 3 -p "Please input 3 character: " haicoder

运行后,终端输出如下:

110_Linux读取标准输入read命令详解.png

我们看到,我们使用了 read 命令,读取标准输入并且给出了输入提示,现在,在等待用户输入,我们输入任意字符串,运行后,终端输出如下:

111_Linux读取标准输入read命令详解.png

我们看到,我们输入了三个字符之后,自动就退出了。

不回显

语法

read -s -p "promot" varname

案例

我们使用 read 命令,读取标准输入并给出提示,同时不要回显在屏幕,并将输入结果赋值给变量 varname,具体命令如下:

read -s -p "Please input: " haicoder

运行后,终端输出如下:

112_Linux读取标准输入read命令详解.png

我们看到,我们使用了 read 命令,读取标准输入并且给出了输入提示,现在,在等待用户输入,我们输入任意字符串,运行后,终端输出如下:

113_Linux读取标准输入read命令详解.png

我们在终端进行了输入,但输入的内容并没有回显出来,我们按下回车后,如下图所示:

114_Linux读取标准输入read命令详解.png

即,我们使用了 s 参数,实现了不回显。

Linux read命令详解总结

Linux 中的 read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量。