Linux read命令的使用

 更新时间:2020年8月15日 17:22  点击:1955

1.命令简介

read命令是Shell内建命令,用于从标准输入或-u选项指定的文件描述符中读取单行,并将读取的单行根据IFS变量分割成多个字段,并将分割后的字段分别赋值给指定的变量列表var_name。第一个字段分配给第一个变量var_name1,第二个字段分配给第二个变量var_name2,依次到结束。如果指定的变量名少于字段数量,则多出的字段连同分隔符分配给最后一个var_name,如果指定的变量命令多于字段数量,则多出的变量赋值为空。如果没有指定任何var_name,则分割后的所有字段都存储在特定变量REPLY中。当然,其不仅可以赋值变量,还可以赋值数组。

IFS(Internal Field Separator)变量是Shell内建的环境变量,用于read命令将读取的单行分隔为多个字段。默认取值为。

REPLY变量也是Shell内建的环境变量,当read命令未指明接收变量时,用于接收read命令读取的单行内容。

2.命令格式

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

3.选项说明

-a [aname]:将分裂后的字段依次存储到指定的数组中,存储的起始位置从数组的下标0开始
-d [delim]:后跟一个标志符,只有第一个字符有用,用以取代换行符作为行的结束标志
-e:在输入的时候可以使用命令补全功能,使用Tab键可自动不全当前目录下文件
-i [text]:If readline is being used to read the line, text is placed into the editing buffer before editing begins
-n [nchars]:后跟一个数字,定义输入文本的长度,而不是读取整行
-N [nchars]:后跟一个数字,定义输入文本的长度,而不是读取整行。但是如果一行不足nchars个字符,则忽略行分隔符继续读取下一行
-p [prompt]:从终端读取输入时,在输入前打印提示信息
-r:屏蔽反斜杠\,如果没有该选项,则\作为一个转义字符,有的话\就是个正常的字符了
-s:安静模式,在输入字符时不再屏幕上显示,例如login时输入密码
-t [timeout]:后面跟秒数,定义输入字符的等待时间
-u [fd]:后面跟文件描述符fd,从文件描述符中读取

4.常用示例

(1)如果没有指定变量,read会把传入的值传给REPLY,只要调用REPLY,只要调用REPLY,只要调用REPLY就可以引用。

[root@TENCENT64 ~]# read;echo "\$REPLY:$REPLY"
dablelv
$REPLY:dablelv

(2)read从终端读取时指定一个提示语

[root@TENCENT64 ~]# read -p"input u password:";echo "\$REPLY:$REPLY"
input u password:123456
$REPLY:123456

(3)-t参数指定 read 命令等待输入的秒数,当计时满时,read命令返回一个非零退出状态码。

#!/bin/bash

if read -t 5 -p "输入网站名:" name
then
  echo "你输入的网站名是 $website"
else
  echo "\n抱歉,你输入超时了。"
fi
exit 0

执行程序不输入,等待5秒后:

输入网站名:
抱歉,你输入超时了

(4)除了控制输入时间,还可以使用-n选项控制输入的字符数量。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。例如只接收2个输入就退出:

#!/bin/bash

read -n2 -p "请随便输入两个字符: " any
echo "\n您输入的两个字符是:$any"
exit 0

(5)-s选项能够使输入的数据不显示在命令终端上(实际上,输入的内容是显示的,只是read命令将文本颜色设置成与背景相同的颜色)。输入密码常用这个选项。

#!/bin/bash

read -s -p "请输入您的密码:" pass
echo "\n您输入的密码是 $pass"
exit 0

执行程序输入密码后是不显示的:

请输入您的密码:
您输入的密码是 runoob

(6)读取文件

每次调用 read 命令都会读取文件中的 “一行” 文本。当文件没有可读的行时,read 命令将以非零状态退出。

while read var1 var2
do
	echo $var1 $var2
done < file.txt

以上就是Linux read命令的使用的详细内容,更多关于Linux read命令的资料请关注猪先飞其它相关文章!

[!--infotagslink--]

相关文章

  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • 使用percona-toolkit操作MySQL的实用命令小结

    1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24
  • 在linux中使用包管理器安装node.js

    网上文章中,在linux下安装node.js都是使用源码编译,其实node的github上已经提供了各个系统下使用各自的包管理器(package manager)安装node.js的方法。...2015-03-15
  • Linux中grep命令详解

    grep命令是Linux系统中最重要的命令之一,功能是从文本文件或管道数据流中筛选匹配的行和数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的命令,这篇文章主要介绍了Linux中grep详解,需要的朋友可以参考下...2023-02-15
  • C#隐式运行CMD命令(隐藏命令窗口)

    这篇文章主要介绍了C#隐式运行CMD命令(隐藏命令窗口),本文实现在winform窗口中运行CMD命令,需要的朋友可以参考下...2020-06-25
  • Linux安装Pytorch1.8GPU(CUDA11.1)的实现

    这篇文章主要介绍了Linux安装Pytorch1.8GPU(CUDA11.1)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-25
  • PHP实现连接设备、通讯和发送命令的方法

    本文实例讲述了PHP实现连接设备、通讯和发送命令的方法。分享给大家供大家参考。具体如下:开发的BS架构的软件(PHP),需要跟设备进行通讯,在此记录一下,欢迎各位指正:1. 采用php socket技术使用TCP/IP连接设备参数$service_po...2015-10-21
  • 对MySQL日志操作的一些基本命令总结

    MySQL日志主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志;日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mysql数据库的客户端连接状况、SQL语句...2015-11-24
  • Linux 下使用shell脚本定时维护数据库的案例

    这篇文章主要介绍了Linux 下使用shell脚本定时维护数据库,本文通过案例分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • 详解Linux环境变量配置全攻略

    这篇文章主要介绍了Linux环境变量配置全攻略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-03-31
  • 解决使用OpenCV中的imread()内存报错问题

    这篇文章主要介绍了解决使用OpenCV中的imread()内存报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • linux服务器快速卸载安装node环境(简单上手)

    这篇文章主要介绍了linux服务器快速卸载安装node环境(简单上手),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
  • Mysql命令大全(详细篇)

    一、连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql/bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密...2015-11-08
  • C#多线程之Thread类详解

    这篇文章主要为大家详细介绍了C#多线程之Thread类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • 查看Redis内存信息的命令

    Redis 是一个开源、高性能的Key-Value数据库,被广泛应用在服务器各种场景中。本文介绍几个查看Redis内存信息的命令,包括常用的info memory、info keyspace、bigkeys等。...2021-01-15
  • 解决jmap命令打印JVM堆信息异常的问题

    这篇文章主要介绍了解决jmap命令打印JVM堆信息异常的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-04
  • Linux下升级安装python3.8并配置pip及yum的教程

    这篇文章主要介绍了Linux下升级安装python3.8并配置pip及yum的教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-02
  • MySQL的常用命令集锦

    下面是我们经常会用到且非常有用的MySQL命令。下面你看到#表示在Unix命令行下执行命令,看到mysql>表示当前已经登录MySQL服务器,是在mysql客户端执行mysql命令。 登录MySQL,如果连接远程数据库,需要用-h指定hostname。登...2015-11-24
  • Linux下安装mysql-8.0.20的教程详解

    这篇文章主要介绍了Linux下安装mysql8.0.20的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-25
  • linux下源码安装mysql5.6.20教程

    这篇文章主要为大家详细介绍了linux下源码安装mysql5.6.20教程的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2017-01-15