插件窝 干货文章 Linux read命令的使用方法及读取文件内容

Linux read命令的使用方法及读取文件内容

read 读取 bash 输入    来源:    2025-04-09

Linux read命令详解及文件内容读取方法

read命令基础用法

read是Linux shell中用于从标准输入或文件中读取数据的内置命令,基本语法如下:

read [options] [variable_name]

常用选项

选项 描述
-p "prompt" 显示提示信息
-s 静默模式(不显示输入内容,适合密码输入)
-n N 只读取N个字符
-t timeout 设置超时时间(秒)
-a array 将输入读入数组
-d delimiter 指定输入结束符(默认是换行符)

基本示例

  1. 简单读取输入:
read name
echo "Hello, $name"
  1. 带提示的读取:
read -p "Please enter your name: " name
  1. 密码输入(不显示内容):
read -s -p "Enter your password: " passwd

使用read读取文件内容

方法1:逐行读取文件

while read line; do
    echo "$line"
done < filename.txt

方法2:读取到数组

read -a words <<< "$(cat filename.txt)"
echo "${words[@]}"

方法3:使用IFS指定分隔符

IFS=','  # 设置分隔符为逗号
while read -r field1 field2 field3; do
    echo "Field1: $field1, Field2: $field2, Field3: $field3"
done < data.csv

高级用法

  1. 超时处理:
if read -t 5 -p "Enter something within 5 seconds: " input; then
    echo "You entered: $input"
else
    echo "Time out!"
fi
  1. 限制输入长度:
read -n 10 -p "Enter up to 10 characters: " input
  1. 自定义结束符:
read -d ":" -p "Enter text ending with ':': " input

注意事项

  1. read默认会删除行首和行尾的空白字符,使用-r选项可以保留原样:
read -r line
  1. 处理包含特殊字符的文件时,建议总是使用-r选项

  2. 在循环中读取文件时,重定向应放在done之后,而不是while之后

  3. 对于大文件处理,逐行读取比一次性读取更高效

实际应用示例

处理CSV文件

#!/bin/bash

while IFS=',' read -r col1 col2 col3; do
    echo "Column 1: $col1"
    echo "Column 2: $col2"
    echo "Column 3: $col3"
    echo "------------------"
done < data.csv

配置文件解析

#!/bin/bash

while IFS='=' read -r key value; do
    # 跳过注释行和空行
    [[ "$key" =~ ^#.*$ ]] || [[ -z "$key" ]] && continue

    echo "Key: $key, Value: $value"
done < config.ini

通过掌握read命令的各种用法,可以灵活处理各种输入场景,特别是在shell脚本中处理用户输入和文件内容时非常有用。