read¶
read命令用来从标准输入中读取数据并赋值给变量.
如果没有进行重定向, 默认就是从键盘读取用户输入的数据; 如果进行了重定向, 那么可以从文件中读取数据.
read命令的用法为:
read [-options] [variables]
options表示选项, 是可选的;
variables表示用来存储数据的变量, 可以有一个, 也可以有多个; 如果没有提供变量名, 那么读取的数据将存放到环境变量REPLY中.
Shell read命令支持的选项:
-a array |
把读取的数据赋值给数组array, 从下标0开始. |
-d delimiter |
用字符串delimiter指定读取结束的标志, 而不是一个换行符(读取到的数据不包括delimiter). |
-e |
在获取用户输入的时候, 对功能键进行编码转换, 不会直接显示功能键对应的字符. |
-n num |
读取n个字符, 而不是整行字符 |
-p prompt |
显示提示信息, 提示内容为prompt. |
-r |
原样读取(Raw mode), 不把反斜杠字符解释为转义字符. |
-s |
静默模式(Slient mode), 不会在屏幕上显示输入的字符. 当输入密码和其它确认信息时, 这是很有必要的. |
-t seconds |
设置超时时间, 单位为秒. 如果用户没有在指定时间内输入完成, 那么read将返回一个非0的退出状态, 表示读取失败. |
-u fd |
使用文件描述符fd作为输入源, 而不是标准输入, 类似于重定向. |
Example1 - 使用read给多个变量赋值:
#!/usr/bin/env bash
read -p "Enter some information >" name age
注意, 使用read给多个变量赋值时, 必须在一行中输入所有的值, 不能换行.
Example2 - 只读取一个字符:
#!/usr/bin/env bash
read -n 1 -p "Enter a char > " char
printf "\n"
echo $char