read 命令用于在 Shell 脚本或交互式终端 中从标准输入(键盘或管道)读取用户输入,并存入变量。
一、语法
read [选项] 变量名
二、选项
-p "提示语" 直接在同一行显示提示文本(常用于交互式输入)
-t 秒数 设置输入超时时间,超时则 read 退出
-n 数量 只读取指定数量的字符,不需按回车
-s 隐藏输入内容(适用于密码输入)
-r 禁止反斜杠 \ 转义,确保原始输入
-a 数组 读取输入并存入数组
-d "分隔符" 以指定分隔符作为输入结束(默认为换行)
三、示例
- 读取用户输入
read name
echo "你好, $name!"
运行结果:
张三
你好, 张三!
- -p 选项(带提示)
read -p "请输入您的姓名: " name
echo "欢迎, $name!"
运行结果:
请输入您的姓名: 李四
欢迎, 李四!
- -t 选项(超时自动退出),如果 5 秒内未输入,read 退出,name 为空。
read -t 5 -p "请输入您的姓名(5秒内): " name
echo "输入的姓名: $name"
- -n 选项(读取固定字符数),只接受一个字符输入,不需按回车。
read -n 1 -p "请输入任意键: " key
echo -e "\n你输入的是: $key"
- -s 选项(隐藏输入,适用于密码)输入不会回显(适用于密码输入)。
read -s -p "请输入密码: " password
echo -e "\n密码已输入"
- -a 选项(存入数组)
read -p "请输入多个值: " -a values
echo "第一个值: ${values[0]}"
echo "第二个值: ${values[1]}"
运行结果:
请输入多个值: 10 20 30
第一个值: 10
第二个值: 20
- 读取文件行
while read line; do
echo "读取: $line"
done < file.txt
逐行读取 file.txt 文件内容。
四、总结
- read 适用于用户输入交互和文件读取。
- 交互式输入 可用 -p、-s、-t、-n 控制。
- 读取数组 用 -a,保留 \ 用 -r。
- 结合 while 可读取文件内容。
- 在 自动化脚本 中,read 常与 echo 和 IFS 配合使用。