如果文件末尾没有换行符,如何使用 while read (Bash) 读取文件中的最后一行?

2023-12-28

假设我有以下 Bash 脚本:

while read SCRIPT_SOURCE_LINE; do
  echo "$SCRIPT_SOURCE_LINE"
done

我注意到,对于末尾没有换行符的文件,这将有效地跳过最后一行。

我四处寻找解决方案并发现了这个 http://linux.derkeiler.com/Mailing-Lists/SuSE/2008-11/msg00237.html:

当读取到达文件末尾时 行尾,它确实读入 数据并将其分配给变量, 但它以非零状态退出。 如果你的循环是构建的“while 读;做事;完成

所以不要测试读取出口 直接状态,测试标志,并有 读取命令设置该标志 在循环体内。那样 无论读取退出状态如何, 整个循环体运行,因为 read 只是命令列表之一 像其他循环一样,而不是 循环是否会发生的决定因素 根本就跑吧。

DONE=false
until $DONE ;do
read || DONE=true
# process $REPLY here
done < /path/to/file.in

我怎样才能重写这个解决方案,使其行为与while我之前有过循环,即没有对输入文件的位置进行硬编码?


我使用以下结构:

while IFS= read -r LINE || [[ -n "$LINE" ]]; do
    echo "$LINE"
done

它几乎适用于输入中除空字符之外的任何内容:

  • 以空行开头或结尾的文件
  • 以空格开头或结尾的行
  • 没有终止换行符的文件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果文件末尾没有换行符,如何使用 while read (Bash) 读取文件中的最后一行? 的相关文章

  • 设置 Pyenv 的路径

    我正在尝试在我的服务器中设置 Pyenv 的加载路径 bashrc file 我正在关注这个tutorial https realpython com intro to pyenv 它要求我们在哪里设置pyenv到加载路径 然而 在我的 b
  • Bash 方法的返回值总是模 256

    我有一个 bash 脚本方法 它返回输入值 然而 返回值始终是模 256 的值 我用 google 搜索了一段时间 发现this http www tldp org LDP abs html exitcodes html文章说它总是以 25
  • 文本处理问题:删除其中一列不包含特定值的行

    我有一个制表符分隔的文件 如下所示 input sequence match sequence score receptor group epitope antigen organism ASRPPGGVNEQF ASRPPGGVNEQF
  • 使用 Ansible 将二进制文件添加到 PATH

    我正在尝试安装Kiex https github com taylor kiex版本管理器Elixir http elixir lang org install html使用 Ansible 的编程语言 这些是我为此使用的戏剧 name K
  • 如何使用我在 github 中发布的 bash 脚本执行 chsh?

    我有一个要点 我总是用它来在新服务器上安装我需要的软件包 http gist github com 4372049 http gist github com 4372049 我需要做的就是通过 ssh 在新服务器中输入以下内容 bash c
  • 如何在 python 日志记录中插入换行符?

    import logging logging basicConfig level logging DEBUG format asctime s levelname s message s datefmt H M S logging info
  • 使用带有curl 的内部字段分隔符

    当我做 ls IFS l 我得到了我期望的输出 当我做 curl IFShttp www google com 我不 我是否误解了内部字段分隔符 如何在不使用任何空格字符的情况下运行curl 命令 您需要将变量放在大括号内 否则 shell
  • 仅打印“docker-container ls -la”输出中的“Names”列

    发出时docker container ls la命令 输出如下所示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox tail f dev
  • .profile 无法从 Mac 终端运行

    我有一个 profile 文件 我正在终端中读取并使用别名 但在某些时候 别名由于没有明确的原因而停止工作 其他命令仍在工作 为了快速修复 我删除了 rm 并在用户目录中重新创建了 profile 文件 我可以看到 至少在该目录中没有 ba
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • 将相对符号链接转换为绝对符号链接

    如何在 bash 中递归地将相对符号链接转换为绝对符号链接 ln sf readlink f link link
  • bash 行长度限制从何而来?

    在运行 Bash 4 4 19 标准安装 的 Solaris 11 上 输入行似乎有 256 个字符的限制 我想了解这个限制从何而来 我浏览了手册页 但没有找到任何解决此问题的内容 仅当未使用 readline 库时才会发生这种情况 在下面
  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • 生成 XML 时如何保留 CDATA 中的换行符?

    我想写一些包含空格字符的文本 例如newline and tab到一个xml文件中 所以我使用 Element element xmldoc createElement TestElement element appendChild xml
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • 为什么我可以直接从 bash 执行 JAR?

    我是一个长期从事 Java 工作的人 并且知道运行带有主类的 JAR 的方法MANIFEST MFJar 中的文件很简单 java jar theJar jar 我用它来启动 Fabric3 服务器 包含在bin server jar在其标
  • 协助 awk/bash 捕获内存差异

    我正在尝试从以下文件中提取以下输出 xr lab show clock Thu Sep 19 14 38 02 812 WIB 14 38 02 893 WIB Thu Sep 19 2019 xr lab xr lab xr lab sh
  • 分叉/多线程进程|重击

    我想让我的代码的一部分更加高效 我正在考虑让它分叉成多个进程 并让它们一次执行 50 100 次 而不是只执行一次 例如 伪 for line in file do foo foo2 foo3 done 我希望这个 for 循环运行多次 我
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su

随机推荐

  • 获取元素的打印页码

    我正在从事一个涉及将 PDF 手册转换为 html 的项目 我试图在打印时保留 PDF 的价值 同时在不受页面概念约束的设备上为它们提供更好的用户界面 我遇到的问题是这些手册有一个目录 其中包含每个章节开始的页码 在设备上查看时 该列表只是
  • 如何列出 npm 用户安装的软件包

    如何列出用户安装 环境包only in npm 当我做npm g list 它输出每个包及其依赖项 相反 我想查看安装在current工作项目或环境 npm list g depth 0 npm Node js 包管理器命令行工具 list
  • 如何在iphone sdk中以编程方式获取图像占用的内存大小?

    我想打印加载特定图像时图像占用的内存量 谁能有想法吗 请帮我 谢谢 拉克什米 UIImage没有提供明显的方式来告诉底层数据的内存 不过 我们可以使用 Core Graphics 来进行估算 您可能可以通过执行以下操作来估计图像占用的内存
  • 防止模态表单在退出时关闭所有非模态打开的表单

    我在 Excel 中使用 VBA 表单时遇到了一些奇怪的行为 我有一个调用无模式表单的模块 它充当调用其他表单的中心 其他形式作为模态形式调用 问题是 一旦子窗体被隐藏或卸载 父无模式窗体也会关闭 我试图找到这个问题的答案 但尽管存在这样的
  • C# CompareTo 方法混乱

    我试图理解 C 中的 CompareTo 方法 我明白 如果两个变量相同 我会得到 0 但是 1 和 1 的部分让我有点困惑 有人可以更直观地向我解释一下吗 是的 我阅读了文档 你说你读过文档 https learn microsoft c
  • 从本地主机连接到 Docker MySQL 容器?

    我正在运行一个 docker mysql 映像 以下是 docker compose yml 文件的样子 db image mysql environment MYSQL ROOT PASSWORD MYSQL ALLOW EMPTY PA
  • iphone - 当视图的阴影打开时,动画的性能非常差

    我有一个UILabel with CALayer阴影 我只是通过移动它UIView动画片 性能很差 我可以看到动画一点也不流畅 我认为这是影子UILabel这会导致动画问题 因为如果我关闭阴影 动画就会变得像正常一样平滑 我尝试过使用vie
  • Laravel5:compiled.php 第 3123 行中出现 TokenMismatchException:

    情况 如果已经被问过 请提前抱歉 但无论如何我都无法让它发挥作用 我使用 Laravel 5 作为 API 我有一个简单的功能来编辑任务 我正在通过我的网络应用程序或邮递员对其进行测试 我总是收到此错误 TokenMismatchExcep
  • chrome 扩展:未捕获类型错误:无法读取未定义的属性(读取“onClicked”)[重复]

    这个问题在这里已经有答案了 我一直在创建一个 chrome 扩展 它应该在扩展单击时在特定选项卡上运行特定脚本 index js service worker js action on extension click chrome brow
  • MVC 验证低于/高于其他值

    在 MVC Net 中验证模型的最佳方法是什么 我想接受最小值 最大值 不是字段的单个最小 最大值 但用户可以使用单独的字段来指定最小值 最大值 public class FinanceModel public int MinimumCos
  • 如何在 codeigniter 挂钩中检索第三个 uri 段

    我正在编写一个自定义 post controller 挂钩 我们知道 codeigniter uri结构是这样的 example com class function id 和我的代码 function hook acl global RT
  • 如何检测文档中的图像

    如何检测 doc xls ppt 或 pdf 等文档中的图像 我遇到了 Apache Tika 我正在尝试它的命令行选项 http tika apache org 1 2 gettingstarted html http tika apac
  • 具有 WPF 桌面桥接包的 UWP 中的 System.BadImageFormatException

    我已经完整详细地描述了本主题中的问题和疑问UWP 与 WPF 桌面桥接包的 AppServiceResponse 中的 System NullReferenceException 和 System BadImageFormatExcepti
  • 如何在邮件中添加html代码?

    我创建了一个自动发送电子邮件的脚本 我的邮件消息包含在以下变量中 message 但是 当我包含类似 html 代码或其他内容时 它在我的邮件中没有正确显示 你可以这样做 headers MIME Version 1 0 r n heade
  • 从 Eigen::SparseMatrix 中提取块/ROI,无需复制

    我想知道有没有什么好方法从 Eigen SparseMatrix 中提取块 ROI 更准确地说 我想要提取的是内向量 我想做的是这样的 typedef Eigen SparseMatrix
  • 为什么ajax模式需要太多时间

    你好 stackoverflow 用户 我有一个jquery来打开模态 代码如下 openVarifiedModal click function var otpFor this data value var formdata this d
  • 将不安全的注册表添加到 Docker

    我有一个在 CentOS 上运行的 docker 1 12 我试图向其中添加不安全的注册表 但文档中提到的内容不起作用 该系统使用systemd所以我创建了一个 etc systemd system docker service d 50
  • 为什么随机种子不能使 Python 中的结果保持不变

    我使用以下代码 我希望使用相同的随机种子获得相同的结果 我使用相同的随机种子 在本例中为 1 并得到不同的结果 这是代码 import pandas as pd import numpy as np from random import s
  • 加权最小二乘估计函数

    R 有加权最小二乘函数吗 具体来说 我正在寻找计算截距和斜率的东西 数据集 1 3 5 7 9 11 14 17 19 25 29 17 31 19 27 31 62 58 35 29 21 18 102153 104123 96564 1
  • 如果文件末尾没有换行符,如何使用 while read (Bash) 读取文件中的最后一行?

    假设我有以下 Bash 脚本 while read SCRIPT SOURCE LINE do echo SCRIPT SOURCE LINE done 我注意到 对于末尾没有换行符的文件 这将有效地跳过最后一行 我四处寻找解决方案并发现了