Linux read命令的使用

 更新时间:2020年08月15日 15:45:09   作者:Dabelv  
这篇文章主要介绍了Linux read命令的使用,帮助大家更好的理解和学习Linux,感兴趣的朋友可以了解下

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命令的资料请关注脚本之家其它相关文章!

相关文章

  • Linux的第二网卡的配置全过程

    Linux的第二网卡的配置全过程

    这篇文章主要介绍了Linux的第二网卡的配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • ssh连接超时解决方法

    ssh连接超时解决方法

    本文为大家介绍了ssh连接超时的解决方法, 另外提供一种不修改配置文件就可以解决连接超时的方法,大家参考使用吧
    2014-01-01
  • Linux系统中如何将普通用户权限提升至root权限

    Linux系统中如何将普通用户权限提升至root权限

    首先,使用普通用户登录并通过命令su-切换到临时Root状态,接着,设置root用户密码并使用命令su切换到root用户,编辑/etc/sudoers文件,修改必要的权限设置,并保存退出,然后,修改/etc/passwd文件中的用户ID从1000改为0,最后,重启Linux系统
    2024-10-10
  • CentOS环境下安装Redis3.0及phpredis扩展测试示例

    CentOS环境下安装Redis3.0及phpredis扩展测试示例

    这篇文章主要介绍了CentOS环境下安装Redis3.0及phpredis扩展测试,结合实例形式分析了CentOS下Redis安装相关步骤、命令及phpredis扩展的测试代码,需要的朋友可以参考下
    2018-04-04
  • Linux中使用Cron定时执行SQL任务的实现步骤

    Linux中使用Cron定时执行SQL任务的实现步骤

    在Linux系统中,计划任务(Cron)是一种强大的工具,可以自动执行预定的任务,它非常适合定期运行脚本、备份数据、清理临时文件等一系列重复性任务,本文给大家介绍了如何在Linux中使用Cron定时执行SQL任务,需要的朋友可以参考下
    2024-11-11
  • linux本机进程间通信之UDS详解

    linux本机进程间通信之UDS详解

    文章介绍了Unix域套接字(UDS)的使用方法,这是一种在同一台主机上不同进程间通信的方式,UDS支持三种套接字类型:SOCK_STREAM、SOCK_DGRAM和SOCK_SEQPACKET,创建UDS需要指定协议族AF_UNIX和相应的套接字类型,与AF_INET不同
    2025-03-03
  • Linux进程基础教程详解

    Linux进程基础教程详解

    这篇文章主要为大家详细介绍了Linux进程基础教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 详解Linux环境下NodeJS的安装配置(HelloWorld)

    详解Linux环境下NodeJS的安装配置(HelloWorld)

    本篇文章主要介绍了Linux环境下NodeJS的安装配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Ubuntu下搭建mail邮件服务器的方法教程

    Ubuntu下搭建mail邮件服务器的方法教程

    这篇文章主要给大家介绍了Ubuntu下搭建mail服务器的方法教程,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • linux如何通过crontab命令定时执行shell脚本

    linux如何通过crontab命令定时执行shell脚本

    为保障网安测试活动的顺利进行,需要设置Linux服务器上服务的定时启停,本文介绍了通过crontab实现服务定时启停的方法,包括检查crontab安装、编写启停脚本、创建定时任务、日志记录,以及问题解决方案,通过crontab-e命令编辑定时任务
    2024-10-10

最新评论