read 是 Shell 脚本中读取键盘输入并赋值给变量的唯一标准方式;支持单变量、多变量分词赋值,默认存入 REPLY,推荐加 -r 防反斜杠误处理并用 "$var" 引用变量,Bash/Zsh 还支持 -p 提示、-t 超时、-s 密码隐藏。

用 read 命令。这是 Shell 脚本中读取键盘输入并赋值给变量的唯一标准方式。
基础写法:一行一变量
最简单的用法是直接跟变量名:
-
read name—— 用户输入后按回车,整行内容(去除首尾空白)存入name - 不写变量名时,默认存入内置变量
REPLY,比如只执行read,之后可用$REPLY取值
一次读多个变量:按空格/制表符切分
如果用户输入多个词(用空格或 Tab 隔开),可以一次性分配给多个变量:
-
read first last,用户输入Alice Smith→first得Alice,last得Smith - 字段多于变量数时,剩余部分全部塞进最后一个变量;字段少于变量数时,多余的变量为空字符串
避免常见陷阱:加 -r 和引号
默认行为容易出错,推荐养成两个习惯:
- 加
-r:防止反斜杠被当作续行符处理(例如用户输path/to\file,不加-r会变成path/tofile) - 引用变量:后续使用时写
"$name",避免字段分裂和通配符展开(比如echo $name遇到*.log会真的列出文件)
提升体验:加提示和超时
这些是 Bash/Zsh 扩展,不是所有 Shell 都支持,但日常够用:
-
read -p "请输入姓名: " name—— 显示提示文字,不换行 -
read -t 10 -p "10秒内输入: " answer—— 超过 10 秒自动跳过,返回非零状态 -
read -s -p "密码: " pwd—— 输入不回显(适合密码),但注意这也不跨 Shell 移植

















