read
命令完全指南read
是 Linux/Unix shell 脚本中一个非常实用的内置命令,用于从标准输入或文件描述符中读取数据并将其赋值给变量。
read [options] [name...]
选项 | 描述 |
---|---|
-a array |
将读取的值分配给数组,从索引 0 开始 |
-d delimiter |
指定读取结束的分隔符,而不是换行符 |
-e |
使用 Readline 获取输入(提供行编辑功能) |
-i text |
在交互式 shell 中使用文本作为初始输入 |
-n nchars |
读取指定数量的字符后返回 |
-N nchars |
精确读取指定数量的字符(忽略分隔符) |
-p prompt |
在读取前打印提示信息 |
-r |
禁止反斜杠转义解释 |
-s |
静默模式,不显示输入(用于密码输入) |
-t timeout |
指定超时秒数 |
-u fd |
从文件描述符 fd 读取 |
#!/bin/bash
echo "请输入您的名字:"
read name
echo "你好, $name!"
#!/bin/bash
echo "请输入您的姓和名:"
read first last
echo "您的全名是: $last $first"
#!/bin/bash
read -p "请输入您的年龄: " age
echo "您今年 $age 岁"
#!/bin/bash
read -s -p "请输入密码: " password
echo
echo "密码已接收"
#!/bin/bash
if read -t 5 -p "请在5秒内输入您的名字: " name; then
echo "你好, $name!"
else
echo "输入超时"
fi
#!/bin/bash
read -n 1 -p "请按任意键继续..." key
echo
echo "您按下了 $key 键"
#!/bin/bash
echo "请输入三个数字,用空格分隔:"
read -a nums
echo "第一个数字: ${nums[0]}"
echo "第二个数字: ${nums[1]}"
echo "第三个数字: ${nums[2]}"
#!/bin/bash
read -d : -p "请输入以冒号结尾的信息:" info
echo "您输入的信息是: $info"
#!/bin/bash
while read line; do
echo "行内容: $line"
done < filename.txt
#!/bin/bash
exec 3< input.txt
read -u 3 line
echo "第一行是: $line"
exec 3<&-
#!/bin/bash
IFS=":" read -p "输入用户名和密码 (格式: user:pass): " user pass
echo "用户: $user"
echo "密码: $pass"
#!/bin/bash
ls | while read file; do
echo "找到文件: $file"
done
#!/bin/bash
find . -type f -print0 | while IFS= read -r -d '' file; do
echo "处理文件: $file"
done
read
会解释反斜杠转义字符,使用 -r
选项可以禁用此功能REPLY
变量中read
命令的退出状态:
read
时,注意管道会创建子shell,可能导致变量在父shell中不可用#!/bin/bash
while true; do
echo "1. 选项一"
echo "2. 选项二"
echo "3. 退出"
read -p "请选择: " choice
case $choice in
1) echo "您选择了选项一";;
2) echo "您选择了选项二";;
3) break;;
*) echo "无效选项";;
esac
done
#!/bin/bash
while IFS='=' read -r key value; do
case $key in
"username") username="$value";;
"password") password="$value";;
esac
done < config.ini
echo "用户名: $username"
echo "密码: $password"
#!/bin/bash
read -s -p "请输入密码: " pass1
echo
read -s -p "请再次输入密码: " pass2
echo
if [ "$pass1" != "$pass2" ]; then
echo "密码不匹配"
exit 1
fi
echo "密码设置成功"
read
命令是 shell 脚本中交互式输入的核心工具,掌握它的各种用法可以大大提高脚本的灵活性和用户体验。