bash 内置 read 命令的使用教程
在 Shell(如 bash
)中,read
是一个内建命令。要查看 read
的帮助信息,可以使用:
help read
或者:
help read | less # 方便翻页查看
read
的常见参数
read [options] VAR1 VAR2 ...
参数 | 作用 |
-r | 禁止反斜杠转义(推荐使用,防止 \ 被解析为特殊字符) |
-p "PROMPT" | 在读取之前打印提示信息 |
-t SECONDS | 设置超时时间(单位:秒) |
-n N | 读取 N 个字符后自动停止 |
-s | 隐藏输入(常用于密码输入) |
-d DELIM | 使用 DELIM 作为分隔符(默认是换行符) |
-a ARRAY | 将输入拆分成数组存入 ARRAY |
-e | 允许使用 readline (支持方向键编辑输入) |
-u FD | 从文件描述符 FD 读取输入 |
示例
1. 读取输入并禁止 \
转义
read -r NAME
echo "Your name: $NAME"
📌 输入: Tom\Jerry
📌 正常输出: Tom\Jerry
(不会解析 \
)
2. 读取时显示提示
read -r -p "Enter your name: " NAME
echo "Hello, $NAME!"
📌 输入: Alice
📌 输出: Hello, Alice!
3. 读取时设置超时
if read -r -t 5 -p "Enter something within 5 seconds: " INPUT; then
echo "You entered: $INPUT"
else
echo "Timeout!"
fi
📌 如果 5 秒内没有输入,脚本会打印 Timeout!
4. 读取 N
个字符
read -r -n 5 VAR
echo "You typed: $VAR"
📌 输入: HelloWorld
📌 输出: You typed: Hello
(只取前 5 个字符)
5. 隐藏输入(适用于密码)
read -r -s -p "Enter password: " PASSWORD
echo
echo "Password entered."
📌 输入不会显示在终端(适用于密码输入)
6. 读取到数组
read -r -a COLORS
echo "First color: ${COLORS[0]}"
echo "Second color: ${COLORS[1]}"
📌 输入: red blue green
📌 输出:
First color: red
Second color: blue
7. 使用自定义分隔符
read -r -d ":" INPUT
echo "You entered: $INPUT"
📌 输入: Hello:World
📌 输出: You entered: Hello
(遇到 :
停止)
8. 从文件描述符读取
exec 3< myfile.txt
read -r -u 3 LINE
echo "First line of file: $LINE"
exec 3<&-
📌 这会从 myfile.txt
读取第一行
总结
read
是 Shell 编程中非常强大的输入工具,可以灵活地控制用户输入方式!🚀
🔹 常用组合:
read -r VAR
→ 标准读取
read -r -p "Enter: " VAR
→ 带提示信息
read -r -t 5 VAR
→ 超时控制
read -r -s VAR
→ 隐藏输入
read -r -a ARRAY
→ 存入数组
read -r -d ":" VAR
→ 自定义终止符