加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

LINUX入门:shell脚本示例:read命令

发布时间:2020-12-13 17:45:39 所属栏目:Linux 来源:网络整理
导读:《LINUX入门:shell脚本示例:read命令》要点: 本文介绍了LINUX入门:shell脚本示例:read命令,希望对您有用。如果有疑问,可以联系我们。 要与 Linux交互,脚本获取键盘输入的结果是必弗成少的, read可以读取键盘输入的字符. read [-rs] [-a ARRAY] [-d de

《LINUX入门:shell脚本示例:read命令》要点:
本文介绍了LINUX入门:shell脚本示例: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:给出提示符.例如,"-p 请输入暗码:"
-r:禁止反斜线的转义功能.这意味着""会变成文本的一部分.
-s:静默模式.输入的内容不会回显在屏幕上.
-t:给出超时时间,在达到超时时间时,read退出并返回错误.也就是说不会读取任何内容,即使已经输入了一部分.

使用示例:

(1).将读取的内容分派给数组变量,从索引号0开始分派.

[root@linuxidc ~]# read -a array_test
what is you name?    
[root@linuxidc ~]# echo ${array_test[@]}
what is you name?
[root@linuxidc ~]# echo ${array_test[0]}
what

(2).指定读取行的停止符号,而不再使用换行符.

[root@linuxidc ~]# read -d '/'
what is you name //       # 输入完尾部的"/",自动停止read

由于没有指定var_name,所以通过$REPLY变量查看read读取的行.

[root@linuxidc ~]# echo $REPLY
what is you name /

(3).限定输入字符.

例如,输入了5个字符后就停止.

[root@linuxidc tmp]# read -n 5
12345
[root@linuxidc tmp]# echo $REPLY   # 输入12345共5个字符
12345

如果输入的字符数小于5,按下回车会立即停止读取.

[root@linuxidc ~]# read -n 5
123
[root@linuxidc ~]# echo $REPLY
123

但如果使用的是"-N 5"而不是"-n 5",则严格限制读满5个字符才停止读取.

[root@linuxidc ~]# read -N 5
123n4
[root@linuxidc ~]# read -N 5
123          # 3后的回车(换行)算是一个字符
4

(4).使用-p选项给出输入提醒.

[root@linuxidc ~]# read -p "pls enter you name: "
pls enter you name: Junmajinlong
[root@linuxidc ~]# echo $REPLY
Junmajinlong

(5).禁止反斜线转义功效.

[root@linuxidc ~]# read -r
what is you name ?
[root@linuxidc ~]# echo $REPLY
what is you name ?

(6).不回显输入的字符.比如输入暗码的时候,不回显输入暗码.

[root@linuxidc ~]# read -s -p "please enter your password: "
please enter your password:
[root@linuxidc ~]# echo $REPLY
123456

(7).将读取的行朋分后赋值给变量.

[root@linuxidc ~]# read var1 var2 var3
abc def    galsl djks
[root@linuxidc ~]# echo $var1:::$var2:::$var3
abc:::def:::galsl djks

(8).给出输入时间限制.没完成的输入将被丢弃,所以变量将赋值为空(如果在执行read前,变量已被赋值,则此变量在read超时后将被笼罩为空).

[root@linuxidc ~]# var=5
[root@linuxidc ~]# read -t 3 var
1
[root@linuxidc ~]# echo $var

本文永远更新链接地址

欢迎参与《LINUX入门:shell脚本示例:read命令》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读