read
命令的广泛用途与应用场景read
是 Linux shell 脚本中一个非常强大且灵活的内置命令,用于从标准输入或文件描述符中读取数据。下面我将详细介绍 read
命令的多种应用场景和高级用法。
read [options] [name...]
#!/bin/bash
echo "请输入您的名字:"
read name
echo "您好, $name!"
#!/bin/bash
echo "请输入您的姓和名(用空格分隔):"
read first last
echo "您的全名是: $last $first"
#!/bin/bash
read -s -p "请输入密码: " password
echo
echo "密码已接收"
#!/bin/bash
read -t 5 -p "请在5秒内输入内容: " input
if [ -z "$input" ]; then
echo "超时未输入"
else
echo "您输入了: $input"
fi
#!/bin/bash
read -n 10 -p "最多输入10个字符: " input
echo
echo "您输入了: $input"
#!/bin/bash
while read line; do
echo "行内容: $line"
done < filename.txt
#!/bin/bash
IFS=: read user pass uid gid info home shell <<< "root:x:0:0:root:/root:/bin/bash"
echo "用户名: $user"
echo "家目录: $home"
#!/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
echo "请输入多个值(用空格分隔):"
read -a array
echo "第一个元素: ${array[0]}"
echo "所有元素: ${array[@]}"
#!/bin/bash
IFS=, read -p "输入逗号分隔的值: " item1 item2
echo "第一个值: $item1"
echo "第二个值: $item2"
#!/bin/bash
exec 3< input.txt
read -u 3 line
echo "从文件描述符3读取: $line"
exec 3<&-
#!/bin/bash
read -r -p "输入可能包含反斜杠的内容: " input
echo "您输入了: $input"
#!/bin/bash
while IFS=, read -r col1 col2 col3; do
echo "列1: $col1, 列2: $col2, 列3: $col3"
done < data.csv
#!/bin/bash
while IFS='=' read -r key value; do
case $key in
"DB_HOST") DB_HOST="$value";;
"DB_USER") DB_USER="$value";;
"DB_PASS") DB_PASS="$value";;
esac
done < config.ini
echo "数据库配置:"
echo "主机: $DB_HOST"
echo "用户: $DB_USER"
echo "密码: $DB_PASS"
#!/bin/bash
curl -s http://example.com/api | while read -r line; do
# 处理每一行响应
echo "处理: $line"
done
#!/bin/bash
some_command | while read -r output; do
echo "命令输出: $output"
# 根据输出内容做进一步处理
done
read
默认会删除前导和尾随的空白字符,使用 -r
选项可以保留REPLY
变量中read
返回非零状态码表示读取失败或遇到EOFread
时要注意子shell问题read
命令的这些特性使其成为 shell 脚本中处理用户输入、解析文件和构建交互式界面的强大工具。