read 命令是 Shell 脚本中从标准输入读取一行内容并赋值给变量的最常用方式,支持单变量/多变量读取、-p/-s/-n/-t 等选项增强交互,并需处理空输入、超时及反斜杠转义等细节。

read 命令是 Shell 脚本里最常用、最直接的用户输入方式,它从标准输入(通常是键盘)读取一行内容,并赋值给变量。
基础用法:读取单个变量
最简单的形式就是 read 变量名。脚本运行时会暂停,等待用户输入,回车后内容存入变量:
#!/bin/bash echo "请输入您的姓名:" read name echo "您好,$name!"
注意:read 默认以空格或制表符为分隔,整行输入都会被当作一个字符串(含空格),除非指定其他分隔符。
一次读多个变量
如果用户输入多个词(用空格分开),可以一次性分配给多个变量:
echo "请输入姓名和年龄(空格分隔):" read name age echo "姓名:$name,年龄:$age"
- 输入
张三 25→name得到张三,age得到25 - 若输入项少于变量数,剩余变量为空;多于变量数,最后一个变量接收剩余全部内容
增强交互体验的常用选项
read 支持多个实用选项,让输入更友好:
-
-p "提示文字":显示提示信息,不用额外写echo -
-s:静默输入(如密码),不回显字符 -
-n N:只读取前 N 个字符(不等回车) -
-t N:设置超时(N 秒无输入则自动退出)
read -p "用户名:" user read -sp "密码:" passwd echo # 换行避免密码显示紧贴提示 echo "登录尝试:$user"
处理特殊输入场景
实际使用中常需应对空输入、取消(Ctrl+C)、超时等情况:
- 用
-r防止反斜杠被转义(读取路径、命令等原始字符串推荐加此选项) - 检查
$?返回值:0 表示正常读取,1 表示 EOF(如 Ctrl+D),128 表示超时 - 结合
if判断是否为空:if [ -z "$input" ]; then echo "输入为空"; fi
不复杂但容易忽略细节,掌握这几个核心用法就能覆盖大多数交互需求。


















