2.2.1 read基础
学习目标
这一节,我们从 基础知识、简单实践、小结 三个方面来学习。
基础知识
场景需求
虽然我们可以通过脚本传参的方式实现脚本一定程度的灵活性,但是生产工作中,有很多更加灵活的场景,需要我们在脚本运行的过程中,传递一些用户定制的具体信息。这个时候,普通的脚本参数就无法满足需求了。
read 命令可以实现我们脚本内外的信息自由传递功能。
命令简介
read命令是用于从终端或者文件中读取输入的内建命令,read命令读取整行输入,每行末尾的换行符不被读入。在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY。常用方式如下:
read 从标准输入读取一行并赋值给特定变量REPLY。
read answer 从标准输入读取输入并赋值给变量answer。
read first last 从标准输入读取内容,将第一个单词放到first中,其他内容放在last中。
read -s passwd 从标准输入读取内容,写入passwd,不输入效果
read -n n name 从标准输入读取内容,截取n个字符,写入name,超过n个字符,直接退出
read -p "prompt" 打印提示,等待输入,并将输入存储在REPLY中。
read -r line 允许输入包含反斜杠。
read -t second 指定超时时间,默认是秒,整数
read -d sper 指定输入信息的截止符号
简单实践
命令操作
交互式接收用户信息
[root@localhost ~]# read
nihao-answer
接收用户输入给一个临时变量
[root@localhost ~]# read answer
nihao-answer
[root@localhost ~]# echo $answer
nihao-answer
接收多个信息,按照顺序交给不同的临时变量
[root@localhost ~]# read first last
first-1 last-2 end-3
[root@localhost ~]# echo $first
first-1
[root@localhost ~]# echo $last
last-2 end-3
实践2-静默显示
显式接收用户输入信息
[root@localhost ~]# read password
123456
[root@localhost ~]# echo $password
123456
隐式接收用户输入信息
[root@localhost ~]# read -s password
[root@localhost ~]# echo $password
abcdefg
实践3-提示用户输入信息
通过 -p 参数提示用户输入的信心
[root@localhost ~]# read -p "请输入登录用户名: " user
请输入登录用户名: root
[root@localhost ~]# echo $user
root
实践4-限制用户输入信息
[root@localhost ~]# read -n 6 -p "sss: " aaa
sss: 123456[root@localhost ~]# read -n 6 -p "只接收6个字符,超过自动退出: " string
只接收6个字符,超过自动退出: 123456[root@localhost ~]#
[root@localhost ~]# echo $string
123456
注意:
-p + -s 的组合会导致不会自动换行,可以结合 echo的方式实现换行
实践5-等待时长
[root@localhost ~]# read -t 5 -p "等待5秒后自动退出! " second
等待5秒后自动退出! 4
[root@localhost ~]# echo $second
4
[root@localhost ~]# read -t 5 -p "等待5秒后自动退出! " second
等待5秒后自动退出! [root@localhost ~]#
小结