linux下read命令详解
要与Linux交互,脚本获取键盘输入的结果是必不可少的,read可以读取键盘输入的字符。
read [-rs] [-a ARRAY] [-d delim] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [var_name1 var_name2 ...]
read命令用于从标准输入中读取输入单行,并将读取的单行根据IFS变量分裂成多个字段,并将分割后的字段分别赋值给指定的变量列表var_name。第一个字段分配给第一个变量var_name1,第二个字段分配给第二个变量var_name2,依次到结束。如果指定的变量名少于字段数量,则多出的字段数量也同样分配给最后一个var_name,如果指定的变量命令多于字段数量,则多出的变量赋值为空。
如果没有指定任何var_name,则分割后的所有字段都存储在特定变量REPLY中。
选项说明:
-a:将分裂后的字段依次存储到指定的数组中,存储的起始位置从数组的index=0开始。
-d:指定读取行的结束符号。默认结束符号为换行符。
-n:限制读取N个字符就自动结束读取,如果没有读满N个字符就按下回车或遇到换行符,则也会结束读取。
-N:严格要求读满N个字符才自动结束读取,即使中途按下了回车或遇到了换行符也不结束。其中换行符或回车算一个字符。
-p:给出提示符。默认不支持"\n"换行,要换行需要特殊处理,见下文示例。例如,"-p 请输入密码:"
-r:禁止反斜线的转义功能。这意味着"\"会变成文本的一部分。
-s:静默模式。输入的内容不会回显在屏幕上。
-t:给出超时时间,在达到超时时间时,read退出并返回错误。也就是说不会读取任何内容,即使已经输入了一部分。
使用示例:
(1).将读取的内容分配给数组变量,从索引号0开始分配。
[root@xuexi ~]# read -a array_test
what is you name? [root@xuexi ~]# echo ${array_test[@]}
what is you name? [root@xuexi ~]# echo ${array_test[0]}
what
(2).指定读取行的结束符号,而不再使用换行符。
[root@xuexi ~]# read -d '/'
what is you name \// # 输入完尾部的"/",自动结束read
由于没有指定var_name,所以通过$REPLY变量查看read读取的行。
[root@xuexi ~]# echo $REPLY
what is you name /
(3).限制输入字符。
例如,输入了5个字符后就结束。
[root@xuexi tmp]# read -n 5
12345 [root@xuexi tmp]# echo $REPLY # 输入12345共5个字符
如果输入的字符数小于5,按下回车会立即结束读取。
[root@xuexi ~]# read -n 5
123 [root@xuexi ~]# echo $REPLY
但如果使用的是"-N 5"而不是"-n 5",则严格限制读满5个字符才结束读取。
[root@xuexi ~]# read -N 5
123\n4 [root@xuexi ~]# read -N 5
123 # 3后的回车(换行)算是一个字符
(4).使用-p选项给出输入提示。
[root@xuexi ~]# read -p "pls enter you name: "
pls enter you name: Junmajinlong [root@xuexi ~]# echo $REPLY
Junmajinlong
"-p"选项默认不带换行功能,且也不支持"\n"换行。但通过$'string'的方式特殊处理,就可以实现换行的功能。例如:
[root@node2 ~]# read -p $'Enter your name: \n'
Enter your name:
JunMaJinLong
关于$'String'和$"String"的作用,见http://www.cnblogs.com/f-ck-need-u/p/8454364.html
(5).禁止反斜线转义功能。
[root@xuexi ~]# read -r
what is you name \? [root@xuexi ~]# echo $REPLY
what is you name \?
(6).不回显输入的字符。比如输入密码的时候,不回显输入密码。
[root@xuexi ~]# read -s -p "please enter your password: "
please enter your password: [root@xuexi ~]# echo $REPLY
(7).将读取的行分割后赋值给变量。
[root@xuexi ~]# read var1 var2 var3
abc def galsl djks [root@xuexi ~]# echo $var1:::$var2:::$var3
abc:::def:::galsl djks
(8).给出输入时间限制。没完成的输入将被丢弃,所以变量将赋值为空(如果在执行read前,变量已被赋值,则此变量在read超时后将被覆盖为空)。
[root@xuexi ~]# var=5 [root@xuexi ~]# read -t 3 var
1 [root@xuexi ~]# echo $var
linux下read命令详解的更多相关文章
- Linux下ps命令详解 Linux下ps命令的详细使用方法
http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...
- Linux下rar命令详解
Linux下rar命令详解 用法: rar <命令> -<选项1> ….-<选项N> < 操作文档> <文件…> <@文件列表…> ...
- linux下tar命令详解
linux下tar命令详解 tar是Linux环境下最常用的备份工具之一.tar(tap archive)原意为操作磁带文件,但基于Linux的文件操作机制,同样也可适用于普通的磁盘文件.ta ...
- Linux下chkconfig命令详解(转)
Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...
- Linux知识积累(4) Linux下chkconfig命令详解
Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...
- Linux下top命令详解
Linux下top命令详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不断刷 ...
- 转载的 Linux下chkconfig命令详解
Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...
- 转 linux下cat命令详解
linux下cat命令详解 http://www.cnblogs.com/perfy/archive/2012/07/23/2605550.html 简略版: cat主要有三大功能:1.一次显示整个文 ...
- Linux下svn命令详解
本文主要是说明linux下svn命令的使用方法,同时记录自己在使用中遇到的一些疑惑. 1.Linux命令行下将文件checkout到本地目录 svn checkout url(url是服务器上的目录) ...
- Linux下history命令详解---转载
Linux下History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 . >History命令语法:[www.linuxidc.com@linux]# history [n][ww ...
随机推荐
- CSS-对于IE的兼容问题处理
css兼容问题 兼容问题 1.文字本身的大小不兼容.同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff下实际占高17px,上留白 ...
- Ch05 类 - 练习
1. 改进5.1节的Counter类,让它不要在Int.MaxValue是变成负数. class Counter{ private var value = Int.MaxValue d ...
- React 添加对 Less 的支持, 使用 create-react-app 脚手架
---恢复内容开始--- 参考博客与我自己的当前版本有一点出入, 所以就将 参考博客写到文章后面去了. 我的电脑: 系统: Ubuntu16.04, 1, 安装脚手架: create-react-a ...
- git----------SourceTree如何连接ssh的仓库地址,这里记录的是客户端需要做的事
1. 2. 打开命令行以后输入ssh-keygen -t rsa -C "example@example.com" 这个地方输入的是你注册gitlab所使用的邮箱.按回车,之后还 ...
- JavaScript知识精简
JS单线程,同步,一次执行某一段代码,等到前一个程序执行完毕再执行.,阻塞,安全. 多线程,异步,不用等到前一个程序执行完毕就执行. 数据类型 JavaScript 是 弱类型 语言,但并不是没有 ...
- 生成并下载txt类型的文件
public ActionResult Index() { return View(); } /// <summary> /// 获取网页源码,并将其写入txt文件中,下载到本地 /// ...
- https://scrapingclub.com/exercise/basic_captcha/
def parse(self, response): # set_cookies = response.headers.getlist("set-cookie").decode(& ...
- 解决mysql中文乱码问题?
mysql是我们项目中非常常用的数据型数据库.但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况.下面就来介绍一下如何彻底解决数据库中文乱码情况. 1.中文乱码 1.1.中文乱码 cre ...
- AI 基础
what AI ? 人工智能(Artificial Intelligence),英文缩写为AI. 人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的 ...
- Bootstrap3基础 table-striped 表格实现隔行换色(浅灰色与白色交替)
内容 参数 OS Windows 10 x64 browser Firefox 65.0.2 framework Bootstrap 3.3.7 editor ...