read
是Linux shell中一个非常实用的内置命令,用于从标准输入或文件中读取数据并赋值给变量。下面我将详细介绍它的功能和常见用法。
read [options] [variable_name]
选项 | 说明 |
---|---|
-p "prompt" |
显示提示信息 |
-t timeout |
设置超时时间(秒) |
-s |
静默模式(不显示输入内容) |
-n num |
只读取num个字符 |
-a array |
将读取的值赋给数组 |
-d delim |
指定结束符(默认是换行) |
-e |
使用readline库获取输入(支持命令行编辑) |
-r |
不解释反斜杠转义字符 |
#!/bin/bash
echo "请输入您的名字:"
read name
echo "你好, $name!"
read -p "请输入您的年龄: " age
echo "您输入的年龄是: $age"
read -p "请输入姓名和年龄: " name age
echo "姓名: $name, 年龄: $age"
read -s -p "请输入密码: " password
echo # 换行
echo "密码已接收"
if read -t 5 -p "5秒内请输入内容: " input; then
echo "您输入了: $input"
else
echo "超时未输入"
fi
read -a array -p "输入多个值(空格分隔): "
echo "第一个元素: ${array[0]}"
echo "所有元素: ${array[@]}"
read -d ":" -p "输入内容(以:结束): " text
echo "输入的内容是: $text"
read -n 4 -p "请输入4个字符: " chars
echo -e "\n您输入的是: $chars"
while read line; do
echo "行内容: $line"
done < filename.txt
read -r -p "输入可能包含特殊字符的内容: " text
echo "处理后的内容: $text"
while true; do
echo "1. 选项一"
echo "2. 选项二"
echo "3. 退出"
read -p "请选择(1-3): " choice
case $choice in
1) echo "执行选项一";;
2) echo "执行选项二";;
3) break;;
*) echo "无效输入";;
esac
done
config_file="config.cfg"
while IFS='=' read -r key value; do
case $key in
"username") username=$value;;
"password") password=$value;;
esac
done < "$config_file"
while IFS=',' read -r col1 col2 col3; do
echo "第一列: $col1, 第二列: $col2, 第三列: $col3"
done < data.csv
read
会将反斜杠()解释为转义字符,使用-r
选项可禁用此行为REPLY
变量IFS
(Internal Field Separator)环境变量会影响read
的分词行为read
时要注意子shell问题read
命令是shell脚本中实现用户交互的重要工具,熟练掌握其用法可以大大增强脚本的灵活性和用户友好性。