- 使用格式
$ read [-p "提示信息"] 变量名
-p
:提示信息。-t
:指定超时秒数。-s
:设置是否在终端显示输入的内容,设置则为不显示,默认显示。-a
:将分隔后的字段依次存储到-a
指定的数组中,存储的起始位置从数组的index=0
开始。-d
:指定读取行的结束符号,默认结束符号为换行符。-n
:限制输入n
个字符就自动结束输入,如果没有输入满n
个字符就按下回车或遇到换行符,则也会结束读取。-N
:限制输入N
个字符就自动结束输入,如果没有输入满N
个字符就按下回车或遇到结束符,不会结束read
输入,此时的结束符算一个字符。-r
:禁止反斜线的转义功能,这意味着\
会变成文本的一部分。
上面配置项没有先后顺序,谁前谁后都行。- 举例
# 没有指定接受变量,直接输入名称,没有指定变量默认会存储到 $REPLY 全局属性中 $ read $ echo $REPLY
# 指定接收变量,直接输入名称 $ read name $ echo $name
# 使用 -p 有提示信息 $ read -p "请输入名称:" name $ echo $name
# 使用 -s 有提示信息,输入不可见 $ read -s -p "请输入名称:" name $ read -p "请输入名称:" -s name $ echo $name
# 使用 -t 必须在 3 秒内完成输入,否则 read 自动退出 $ read -t 3 name $ echo $name
# 使用 -a 将输入的数据进行空格分隔成数组,并存储到 $arr $ read -a arr 11 22 33 44 # 默认输出数组 0 位置 $ echo $arr 11 # 输出全部 $ echo ${arr[@]} 11 22 33 44 $ echo ${arr[0]} 11 $ echo ${arr[1]} 22
# 使用 -d 设置 / 为结束符,而不是回车键位结束输入 $ read -d '/' 123 123 123/ $ echo $REPLY 123 123 123
# 使用 -n 设置输入长度为 5,输入到 5 位字符时自动结束输入 $ read -n 5 12345 $ echo $REPLY 12345