Skip to content

read 命令

基本用法

读取输入

bash
#!/bin/bash

# 读取用户输入
echo "请输入你的名字:"
read name
echo "你好, $name!"

读取多个变量

bash
#!/bin/bash

# 读取多个变量
echo "请输入姓名和年龄:"
read name age
echo "姓名: $name"
echo "年龄: $age"

选项

-p 选项

bash
#!/bin/bash

# 使用 -p 选项显示提示
read -p "请输入你的名字: " name
echo "你好, $name!"

-n 选项

bash
#!/bin/bash

# 使用 -n 选项限制读取字符数
read -n 1 -p "按任意键继续..."
echo ""
echo "继续执行..."

-s 选项

bash
#!/bin/bash

# 使用 -s 选项隐藏输入
read -s -p "请输入密码: " password
echo ""
echo "密码已输入"

-t 选项

bash
#!/bin/bash

# 使用 -t 选项设置超时
read -t 5 -p "请输入你的名字(5秒内): " name
if [ -z "$name" ]; then
    echo "超时"
else
    echo "你好, $name!"
fi

-d 选项

bash
#!/bin/bash

# 使用 -d 选项设置分隔符
read -d ":" -p "请输入文本(以冒号结束): " text
echo "你输入了: $text"

读取文件

逐行读取

bash
#!/bin/bash

# 逐行读取文件
while IFS= read -r line; do
    echo "$line"
done < input.txt

读取到数组

bash
#!/bin/bash

# 读取文件到数组
readarray -t lines < input.txt

# 遍历数组
for line in "${lines[@]}"; do
    echo "$line"
done

实用示例

示例1:交互式菜单

bash
#!/bin/bash

# 显示菜单
echo "请选择操作:"
echo "1) 创建文件"
echo "2) 删除文件"
echo "3) 查看文件"
echo "4) 退出"

# 读取用户选择
read -p "请输入选项: " choice

# 处理用户选择
case $choice in
    1)
        echo "创建文件"
        ;;
    2)
        echo "删除文件"
        ;;
    3)
        echo "查看文件"
        ;;
    4)
        echo "退出"
        exit 0
        ;;
    *)
        echo "无效的选项"
        ;;
esac

示例2:密码输入

bash
#!/bin/bash

# 读取用户名
read -p "用户名: " username

# 读取密码(隐藏)
read -s -p "密码: " password
echo ""

# 确认密码
read -s -p "确认密码: " password_confirm
echo ""

# 验证密码
if [ "$password" = "$password_confirm" ]; then
    echo "密码设置成功"
else
    echo "密码不匹配"
fi

示例3:读取配置

bash
#!/bin/bash

# 读取配置文件
while IFS='=' read -r key value; do
    # 跳过注释和空行
    [[ "$key" =~ ^#.*$ ]] && continue
    [[ -z "$key" ]] && continue
    
    # 处理配置
    echo "配置: $key = $value"
done < config.conf

示例4:批量处理

bash
#!/bin/bash

# 读取文件列表
read -p "请输入文件列表(空格分隔): " files

# 处理文件列表
for file in $files; do
    if [ -f "$file" ]; then
        echo "处理文件: $file"
    else
        echo "文件不存在: $file"
    fi
done

最佳实践

1. 使用 -p 选项

bash
# 好的做法
read -p "请输入你的名字: " name

# 不好的做法
echo "请输入你的名字:"
read name

2. 使用 -s 选项

bash
# 好的做法
read -s -p "密码: " password
echo ""

# 不好的做法
read -p "密码: " password

3. 使用 -t 选项

bash
# 好的做法
read -t 5 -p "请输入: " input

# 不好的做法
read -p "请输入: " input

总结

read 命令的关键点:

  1. 基本用法read variable
  2. 选项-p-n-s-t-d
  3. 读取文件:使用 while 循环逐行读取
  4. 实用示例:交互式菜单、密码输入、读取配置、批量处理
  5. 最佳实践:使用 -p 选项、使用 -s 选项、使用 -t 选项

下一节我们将学习管道的使用。