在Linux中,read命令用于从标准输入中读取单行,同时将字符串根据IFS变量分裂成多个字段,并将分割后的字段分别赋值给指定的数组array,若没有指定array,则所有字段都存储在特定变量REPLY中。
注意:若指定的变量array长度少于字段数量,则多出的字段全部存储在数组的最后一个变量中。

语法
|
1 |
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新开启的 |
实例
从键盘读取:
|
1 2 3 4 5 6 |
#!/bin/bash echo "请输入姓名: " read name echo "你输入的姓名是:$name" exit 0 |
指定提示信息:
|
1 2 3 4 5 |
#!/bin/bash read -p "请输入姓名:" name echo "你输入的姓名是:$name" exit 0 |
指定等待时间(秒):
|
1 2 3 4 5 6 7 8 9 |
#!/bin/bash if read -t 5 -p "请输入姓名:" name then echo "你输入的姓名是:$name" else echo "\n等待超时" fi exit 0 |
隐藏输入字符:
|
1 2 3 4 5 |
[root@web]# read -s -p "请输入密码:" 请输入密码: [root@web ~]# echo $REPLY 123456 |
原创文章禁止转载:技术学堂 » Linux标准输入工具read命令详解

技术学堂














