You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何实现按回车键逐行读取文件内容?

实现按回车逐行显示文本文件内容的Shell脚本

问题分析

你最初的脚本出现语法错误是因为if语句缺少闭合的fi;修改后无报错但不等待输入也无输出,核心原因是**while循环的输入重定向< filename.txt会让所有read命令默认从该文件读取内容**,而非终端,所以read input会直接读取文件里的行,不会等待你按下回车,最终因为逻辑问题没有输出。

正确实现脚本

要让read input强制从终端读取输入,需要指定其输入源为/dev/tty,以下是可行的脚本:

#!/bin/bash
while IFS= read -r line
do
    # 从终端读取用户输入(等待回车)
    read -r input < /dev/tty
    echo "$line"
done < filename.txt

细节说明

  • IFS= read -r line:IFS=确保读取的行保留开头和结尾的空格,-r避免反斜杠被当作转义字符,保证行内容的完整性。
  • read -r input < /dev/tty:明确指定从终端设备读取输入,不受while循环的输入重定向影响,这样每次都会等待你按下回车键。
  • 去掉不必要的if判断:因为只要用户按下回车,input就是空的(符合你最初的逻辑),直接显示行内容即可,无需额外判断。

内容的提问来源于stack exchange,提问作者rbssss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:25:30