Linux read命令的使用

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命令的资料请关注我们其它相关文章!

(0)

相关推荐

  • 在Linux系统中使用Vim读写远程文件的命令详解

    大家好,我是良许. 今天我们讨论一个 Vim 使用技巧--用 Vim 读写远程文件.要实现这个目的,我们需要使用到一个叫 netrw.vim 的插件.从 Vim 7.x 开始,netrw.vim 就被设置为默认安装的标准插件了.这个插件允许用户通过 ftp.rcp.scp.http 等协议读写.编辑和浏览远程文件. 设定vim的工作方式(临时) :set (模式信息) :set nu - 显示行号 :set nonu - 取消行号 :set mouse=a - 设定鼠标可用 :set curso

  • 详解Linux time 命令的使用

    1.命令简介 time 用于统计命令执行所消耗的时间及相关系统资源等信息.time 可以显示的资源有四大项,分别是: Time resources Memory resources IO resources Command info 2.命令格式 time [options] command [arguments...] 3. 选项说明 -f FORMAT, --format=FORMAT:使用指定格式输出.如果没有指定输出格式,采用环境变量 TIME 指定的格式 -p, --portabili

  • Linux chkconfig 命令的使用

    1.命令简介 chkconfig 命令用于更新和查询系统服务的运行等级信息.它可查询操作系统在每一个运行等级中会自动执行哪些系统服务,包括各类常驻服务,比如 httpd.sshd.mysqld 等. chkconfig 实际上是通过改变七个不同运行等级目录 /etc/rc[0-6].d 中服务脚本的符号链接,来设置操作系统在每一个运行等级中会执行哪些系统服务.chkconfig 不是用于立即启动或停止某一个服务,这一点与 service 不同. chkconfig 有五个功能: (1)添加新的服

  • Linux ln 命令的使用

    1.命令简介 ln 命令用来为文件创建链接,分为硬链接(hard link)和软链接(符号链接,symbolic link)两种,默认创建硬连接,如果要创建软链接须使用 -s 选项.本文介绍的是 GNU 版本的实现,其它版本(如 POSIX 版)实现可能所有不同. 注意: (1)硬链接不是一个独立的文件,只是一个文件名.一个文件可以有多个文件名,只有将最后一个文件名从磁盘上删除,才能把这个文件删掉: (2)软链接可以跨文件系统,但硬链接不能跨文件系统,因为硬链接只是文件的别名,而非独立的文件:

  • Linux usermod 命令的使用

    1.命令简介 usermod(user modify)命令是系统管理员命令,用于修改用户账号 . usermod可用来修改用户账号的各项设定,修改系统账号文件来反映通过命令行指定的变化. 2.命令格式 usermod [OPTIONS] LOGIN 3.选项说明 -c, --comment 添加备信息 -d, --home HOME_DIR 用户的新主目录 -e, --expiredate EXPIRE_DATE 设定帐户过期的日期 -f, --inactive INACTIVE 过期 INAC

  • Linux passwd 命令的使用

    1.命令简介 passwd 令用于设置用户的认证信息,包括用户密码.账户锁定.密码失效等. 系统管理员能用它管理系统用户的密码,只有管理员可以指定用户名称,一般用户只能变更自己的密码. 2.命令格式 passwd [OPTIONS] [USERNAME] 不带任何选项和参数直接运行 passwd 表示修改当前用户的登录密码,这也是 passwd 最常见的用法. 3.选项说明 注意,长选项的必须参数对于短选项也是必须的. -k, --keep 保持身份验证令牌不过期 -d, --delete 删除

  • linux利用read命令获取变量中的值

    前言 本文主要给大家介绍了关于linux利用read命令获取变量中值的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. read的常用用法如下: read -[pstnd] var1 var2 ... -p提示语句 -n 字符个数 -s 屏蔽回显 -t 等待时间 -d 输入分界 read来获取变量,是通过屏幕中等待用户输入的,如果是用read命令从已知的变量来获取值要如何操作呢? 比如说: input_ips='127.127.127.10-127.127.127.14

  • 基于使用paramiko执行远程linux主机命令(详解)

    paramiko是python的SSH库,可用来连接远程linux主机,然后执行linux命令或者通过SFTP传输文件. 关于使用paramiko执行远程主机命令可以找到很多参考资料了,本文在此基础上做一些封装,便于扩展与编写脚本. 下面直接给出代码: # coding: utf-8 import paramiko import re from time import sleep # 定义一个类,表示一台远端linux主机 class Linux(object): # 通过IP, 用户名,密码,

  • Linux traceroute命令使用方法实例详解

    Linux traceroute命令使用方法实例详解 一.默认使用的是UDP协议(30000以上端口) 二.使用TCP协议 -T -p 三.使用ICMP协议 -I 四.实战 [root@localhost hping-master]# whereis traceroute traceroute: /usr/bin/traceroute /usr/share/man/man8/traceroute.8.gz [root@localhost hping-master]# [root@localhos

  • linux tar命令简介

    一.使用介绍 tar命令用来打包,解包和压缩. 1.名词区分 打包:将一大堆文件或目录变成一个总的文件[tar命令] 压缩:将一个大的文件通过一些压缩算法变成一个小文件[gzip,bzip2等] Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令). 2.tar语法 语法:tar [主选项+辅选项] 文件或目录 使用该命令时,主选项必须有,它告诉tar要做什么事情,辅选项

  • linux shutdown命令详解

    shutdown命令用来系统关机命令.shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作. 语法 shutdown(选项)(参数) 选项 -c:当执行"shutdown -h 11:50"指令时,只要按+键就可以中断关机的指令: -f:重新启动时不执行fsck: -F:重新启动时执行fsck: -h:将系统关机: -k:只是送出信息给所有用户,但不会实际关机: -n:不调用init程序进行关机,而由shutdown自己进行: -r:shutdown之后重新启

  • linux mkdir命令详解

    mkdir命令用来创建目录.该命令创建由dirname命名的目录.如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录:如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录.在创建目录时,应保证新建的目录与它所在目录下的文件没有重名. 注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它们来更有效地组织文件.最好采用前后一致的命名方式来区分文件和目录.例如,目录名可以以大写字母开头,这样,在目录列表中目录名就出现在前面. 在一个子目录

  • Linux shell命令帮助格式详解

    前言 linux shell命令通常可以通过-h或--help来打印帮助说明,或者通过man命令来查看帮助,有时候我们也会给自己的程序写简单的帮助说明,其实帮助说明格式是有规律可循的 帮助示例 下面是git reset命令的帮助说明,通过man git-reset可以查看 git reset [-q] [<tree-ish>] [--] <paths>... git reset (--patch | -p) [<tree-ish>] [--] [<paths>

  • Linux du命令查看文件夹大小并按降序排列

    1. df -lh 2. du -s /usr/* | sort -rn 这是按字节排序 3. du -sh /usr/* | sort -rn 这是按兆(M)来排序 4.选出排在前面的10个 du -s /usr/* | sort -rn | head 5.选出排在后面的10个 du -s /usr/* | sort -rn | tail du -h –-max-depth=0 user du -sh –-max-depth=2 | more 总结du常用命令 du -h --max-dept

  • PHP调用Linux的命令行执行文件压缩命令

    前几天工作中,需要将3个txt文件,打包成*.zip down到本地-- 一开始,我和普通青年一样,想到用PHP内置的 ZipArchive,代码看起来应该是这样的: 复制代码 代码如下: /*拆分成3个txt文件 分别是wow_1.txt wow_2.txt 和 wow_3.txt*/ $zip=new ZipArchive(); $zipfile='./Exl_file/wow.zip'; if($zip->open($zipfile,ZIPARCHIVE::CREATE)===TRUE){

  • Linux常用命令全集(超全面)

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验

  • Linux通过命令仅获取IP地址的方法

    一同事的朋友正在参加笔试,遇到这么一个问题让他帮忙解决,结果同事又找到我帮他搞定.真是感慨:通讯发达在某些方面来说,真不知是不是好事啊!题目大致如下所示,一般我们使用ifconfig查看网卡信息,请问你可以通过什么命令,让其只输出IP地址192.168.42.128 看似简单的问题,实现起来也不是太简单.看看下面的思路吧 [root@DB-Server ~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:9E:70:0E inet

随机推荐