Bash 实时读取 STDOUT 流

2023-12-15

我已经搜索过这个并期望找到数百个解决方案,但没有找到!

我想读取 STDOUT 流并等待特定字符串出现,而不等待该过程完成。

我现在所拥有的,等待该过程完成后再返回输出:

RESP=$(execute some command 2>&1)
if $RESP contains something then do something;

如何实时读取流而不是等待它完成?

EDIT

我尝试了 paddy 建议的以下命令,用于测试与 ping 命令的配合:

RESP=$(ping 192.168.0.1 | grep seq=5 -m1)

但是它不适用于我想使用 dhcpcd 的命令:

RESP=$(dhcpcd wlan0 -r 192.168.0.190 | grep claims -m1)

与 ping 测试不同,命令的输出被发送到控制台而不是被隐藏,并且它永远不会检测到“claims”文本,即使它出现在输出中?


你可以通过管道进入grep进行匹配并在遇到匹配时退出。这也将退出产生输出的程序。

if mycommand | grep something -q; then
    dosomething
fi

如果有任何匹配,上面将退出(-q),但不显示结果。如果你想看到输出,你可以在第一场比赛时退出(使用-m1):

RESP=$(mycommand | grep something -m1)

阅读手册页grep了解更多信息。


如果您不想取消产生输出的程序,您可以尝试将其写入后台文件,然后tail该文件:

mycommand > output &
if tail -f output | grep something -q; then
    dosomething
fi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bash 实时读取 STDOUT 流 的相关文章

  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • Pure Bash 替换捕获组

    我有这个示例字符串 test string 13A6 该字符 数字可以是从 0 到 9 以及从 A 到 F 我想要这个输出 1 3 A 6 我有这个工作 result echo test string sed s g 我想在没有 sed 的
  • 将相对符号链接转换为绝对符号链接

    如何在 bash 中递归地将相对符号链接转换为绝对符号链接 ln sf readlink f link link
  • 如何判断 Bash 中是否存在文件?

    这会检查文件是否存在 bin bash FILE 1 if f FILE then echo File FILE exists else echo File FILE does not exist fi 我如何只检查文件是否存在not ex
  • 有没有办法让我简化这些回声? [复制]

    这个问题在这里已经有答案了 我仍在学习如何编写 shell 脚本 并且我面临着一个挑战 让我更容易回显 Name1 Name2 Name15 我不太确定从哪里开始 我已经想法 但如果我搞砸了 我不想看起来很傻 有什么帮助吗 我实际上还没有尝
  • 对目录中的所有文件执行命令

    有人可以提供执行以下操作的代码 假设有一个文件目录 所有这些文件都需要通过程序运行 该程序将结果输出到标准输出 我需要一个脚本 该脚本将进入一个目录 对每个文件执行命令 并将输出连接到一个大输出文件中 例如 要在 1 个文件上运行命令 cm
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • 在 bash 脚本中提取 XML 值 [重复]

    这个问题在这里已经有答案了 我正在尝试从 xml 文档中提取一个值 该文档已作为变量读入我的脚本中 原始变量 data is
  • 协助 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
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 如何在 OS X 上查看 $PATH 变量的当前值?

    PATH returns bash usr local share npm bin Library Frameworks Python framework Versions 2 7 bin usr local bin usr local s
  • 如何使用存储在文本文件中的选项在 bash 中显示选择菜单? [复制]

    这个问题在这里已经有答案了 如何使用我存储在文本文件的各行中的选项为用户显示选择菜单 例如 我的文本文件 ingestion txt 如下所示 SOUP FTS CTS JDBC NEW 我希望用户看到这个 Please select an
  • 如何使用 sed 将空格替换为 \(space)?

    当我使用 sed 将所有空格替换为 X 时 该命令有效 命令为 sed s X g filelist tmp 但是 当我尝试用 space 替换所有出现的空格时 代码是 sed s g filelist tmp 这不起作用 我究竟做错了什么
  • 在复杂的文件夹结构中进行测试

    我正在 golang 中构建一个设计模式存储库 为了运行所有测试 我使用这个 bash 脚本 有用 bin bash go test creational abstract factory go go test creational bui
  • 每当 SQLERROR 永远不起作用时

    我不知道可能是什么原因 我已经在网上花了几个小时试图找出我的情况出了什么问题 我查过官方文档 https docs oracle com cd B19306 01 server 102 b14357 ch12052 htm还有一些汤姆 凯特
  • 以受限用户身份运行 monit 并使其监视需要 root 权限的进程

    我有一个用 Ruby 编写的特定脚本 需要 root 权限 大多数其他进程不需要它 因此很容易在 Monit 中设置 不是这个 服务器需要监听386 这个端口只有root可用 我不会详细说明原因 因为 1 我不是一个低级的人 2 到目前为止
  • 为什么我的 Dockerfile CMD 不起作用?

    所以在我的 Dockerfile 的末尾我有这样的内容 WORKDIR home CMD django admin startproject whattt CMD bin bash 当我创建映像然后运行容器时 一切都按预期运行 没有错误 D
  • IBM AIX:核心-外壳:显示文件修改日期

    我想用 bash 做这样的事情 查看文件上次修改的时间 ls lha ls full time 但我必须在 AIX 上使用 core shell 怎样才能达到这样的效果呢 您可以使用 istat istat test ksh Inode 8
  • Bash 脚本监听按键以继续

    因此 我想编写一个由一系列步骤组成的 bash 脚本 并将其标识为 task 然而 每个步骤都只能完成并且可以根据用户的需要运行 Do task1 if keypressed stop task1 and move on this is t
  • 如何使用 echo 写入非 ASCII 字符?

    如何写非ASCII http en wikipedia org wiki ASCII使用 echo 的字符 是否有转义序列 例如 012或类似的东西 我想使用以下方法将 ASCII 字符附加到文件中 echo gt gt file 如果您关

随机推荐

  • python:multiprocessing.Pipe 和重定向标准输出

    我在用multiprocessing包生成第二个进程 我想将 stdout 和 stderr 重定向到第一个进程 我在用multiprocessing Pipe object dup2 output pipe fileno 1 Where
  • VS 2010 Ultimate:将 ProteusDebugEngine 调试器附加到进程失败

    当将 C NET 4 项目加载到我的主机 Win 7 Ultimate 64 位 上的 VS 2010 Ultimate 中时 我收到错误消息 Attaching the ProteusDebugEngine debugger to pro
  • 使用“.gitattributes”文件修复 Git 存储库中的行结尾

    需要修复什么 我有一个包含单个 md文件 其中包含我正在写的一篇文章 我在几台不同的计算机上编辑该文件 其中一台运行 Linux 另一台运行 Windows 看着一个git diff现在在 Windows 中我做了一些更改 我可以看到我的文
  • @RequestMapping 未正确映射

    我正在尝试设置一个控制器 但不幸的是无法查看输出 一切都正确渲染 当我去http localhost 8080 CMT content edit我收到 404 页面 从 Netbeans 运行我的应用程序会转到http localhost
  • 多对多 Ajax 表单(Symfony2 表单)

    我在 mongodb 中玩家和锦标赛之间存在多对多关系 我希望能够一次将许多玩家添加到锦标赛中 如果没有 ajax 这很简单 但我们有一个包含数千名玩家的数据库 因此表单选择变得巨大 我们想为此使用 ajax 是否可以创建一个小部件 带有j
  • 创建安装程序:从注册表项读取安装路径(例如 wix/installshield/nsis)

    我想创建我的程序的安装程序 但由于安装相当复杂 我需要比 installshield 限量版更高级的东西 我必须从当前的安装程序中运行另一个安装程序 用户是否按 取消 或安装该程序并不重要 我只需要运行它即可 我必须在用户计算机上安装一个包
  • XMl 解析中的空指针异常

    我需要解析 Xml 文档并将值存储在文本文件中 当我解析普通数据 如果所有标签都有数据 时 它工作正常 但如果任何标签没有数据 那么它会抛出我需要的 空指针异常 要做的 为了避免空指针异常 请建议我使用示例代码 示例 XML
  • 无法使用 Laravel SMTP 驱动程序将邮件发送到 gmail 帐户并且没有收到错误

    我正在 Localhost 中构建 Laravel 5 8 应用程序 我这样配置我的 env 文件 MAIL DRIVER smtp MAIL HOST mail mydomain com MAIL PORT 465 took from m
  • 隐式转换没有警告

    g sizeofint cpp std c 11 Wconversion Wall Wextra Werror pedantic errors include
  • Django 的 Cron 示例

    我在互联网上搜索了 Django 中计划作业的工作示例 但我只能找到如何做 但没有给出例子 有人可以分享 Django 框架使用 cron 运行计划任务的工作示例吗 首先创建一个自定义管理命令 该命令将用于将任务添加到 crontab 这是
  • 尝试在 Microsoft Access 中制作高效的日历

    我正在开发一个设备管理系统 前端使用 MS Access mdb 文件 后端使用 SQL Server 2008 如果需要 我可以将前端转换为 MS Access 2010 文件 我创建了一个日历表单 用户可以在其中查看哪些设备已预订 注销
  • 从 Outlook 加载项中获取 HTTP

    我需要调用外部 Web 服务 以便我的外接程序与我们公司的 Java servlet 进行通信 我尝试使用 JavaScriptXMLHttpRequest var http new XMLHttpRequest http open GET
  • 在 Scala 常规类中使用 Lenses

    大多数流行的 Scala JSON 库都能够序列化和反序列化为案例类 不幸的是 在 Scala 2 11 发布之前 案例类可以拥有的参数数量是有限制的 最多 22 个 作为超过此限制的解决方法 可以使用常规类 例如 如何使用 non cas
  • 从具有重复键的字符串创建 dict/json Python

    我有一个可以解析为 JSON 或 dict 对象的字符串 我的字符串变量如下所示 my string variable a 1 b b1 1 b2 2 b b1 3 b2 2
  • ggplot2 geom_smooth 线未显示在我的图表上

    我正在尝试使用绘制的数据添加一条线geom smooth 但我遇到了困难 这是我的代码 plot BG ggplot data geom point aes x Mass LT y BG colour factor Temp f plot
  • Active Directory PrimaryContext.ValidateCredentials 域消歧

    我正在处理两个域 一个是受信任的域 一个域上可能有一个 JohnSmith 另一个域上可能有另一个 JohnSmith 这两个人都需要登录我的应用程序 我的问题 我传入哪个域并不重要 此代码返回 true 我如何知道哪个 JohnSmith
  • 运行“adb shell wm Density 240”更改 Android 设备密度时出错

    我想调整 Android 设备上的屏幕大小 当我运行以下命令时 adb shell wm density 240 or adb shell wm size 800x480 我收到错误 system bin sh wm not found 为
  • 将混合嵌套列表转换为嵌套元组

    如果我有 easy nested list foo bar foofoo barbar 并希望拥有 foo bar foofoo barbar I can do tuple tuple i for i in easy nested list
  • 创建自定义 NSAttributedString.Key

    我正在尝试构建一个简单的笔记应用程序 目前 我关注的是使用不同文本样式设置文本的可能性 例如正文 标题 粗体 斜体等 我用了一个NSAttributedString设置不同的文本样式 现在 我想检测所选文本应用了哪种样式 我认为一个好方法是
  • Bash 实时读取 STDOUT 流

    我已经搜索过这个并期望找到数百个解决方案 但没有找到 我想读取 STDOUT 流并等待特定字符串出现 而不等待该过程完成 我现在所拥有的 等待该过程完成后再返回输出 RESP execute some command 2 gt 1 if R