【发布时间】:2021-11-27 01:45:29
【问题描述】:
我正在尝试在 shell 脚本中运行一个命令,如果处理日志(不确定任务运行时终端上输出的日志是什么)包含字符串“INFO | 下一个会话”,我想退出它将从“开始”
我尝试使用 grep,但由于字符串“INFO | Next session will start at”不在标准输出中,因此在命令运行时无法检测到。
我正在运行的具体命令如下
pipenv run python3 run.py --config accounts/user/config.yml
“处理日志”是指终端中显示标准输出之前的日志输出。
...
[D 211127 10:07:12 init:400] atx-agent version 0.10.0
[D 211127 10:07:12 init:403] device wlan ip: route ip+net: no such network interface
[11/27 10:07:12] INFO | Time delta has set to 00:11:51.
[11/27 10:07:13] INFO | Kill atx agent.
[11/27 09:59:32] INFO | Next session will start at: 10:28:30 (2021/11/27).
[11/27 09:59:32] INFO | Time left: 00:28:57.
我正在尝试这样做,因为我尝试运行的 yml 文件对您可以执行它的时间有限制,如果时间不满足,我想退出任务。
我试图提供尽可能多的背景信息,但如果缺少某些内容,请告诉我。
【问题讨论】:
-
具体是什么版本的 bash?或者您是否严格要求在 bash 和 zsh 中都可以使用的答案(这大大限制了可以使用的功能)?
-
抱歉只使用 zsh。并且版本是zsh 5.8 (x86_64-apple-darwin18.7.0)
-
如果您不接受仅限 bash 的答案,请取出 bash 标签。 bash 和 zsh 是两个不同的 shell,它们在很大程度上是不兼容的。
-
(顺便说一句,我不知道 zsh 相当于 bash 协进程是什么,但它是一个可以查看的地方。如果 zsh 允许您获取进程替换的 PID,那么您就可以杀死阅读后在其中编写程序,这是另一种通用方法;但我只知道 bash 的详细信息。
-
输出到stdout还是stderr?