在Linux中,read命令用于从标准输入中读取单行,同时将字符串根据IFS变量分裂成多个字段,并将分割后的字段分别赋值给指定的数组array,若没有指定array,则所有字段都存储在特定变量REPLY中。
注意:若指定的变量array长度少于字段数量,则多出的字段全部存储在数组的最后一个变量中。
语法
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
参数说明
参数 | 说明 |
-a | 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符 |
-d | 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志 |
-e | 在输入的时候可以使用命令补全功能 |
-n | 后跟一个数字,定义输入文本的长度,很实用 |
-N | 严格要求读满N个字符才自动结束读取,即使中途按下了回车或遇到了换行符也不结束 |
-p | 后面跟提示信息,即在输入前打印提示信息 |
-r | 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了 |
-s | 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码 |
-t | 后面跟秒数,定义输入字符的等待时间 |
-u | 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的 |
实例
从键盘读取:
#!/bin/bash echo "请输入姓名: " read name echo "你输入的姓名是:$name" exit 0
指定提示信息:
#!/bin/bash read -p "请输入姓名:" name echo "你输入的姓名是:$name" exit 0
指定等待时间(秒):
#!/bin/bash if read -t 5 -p "请输入姓名:" namee then echo "你输入的姓名是:$name" else echo "\n等待超时" fi exit 0
隐藏输入字符:
[root@web]# read -s -p "请输入密码:" 请输入密码: [root@web ~]# echo $REPLY 123456
原创文章禁止转载:技术学堂 » Linux标准输入工具read命令详解