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→ 自定义终止符