首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当grep返回结果时重新启动程序

当grep返回结果时重新启动程序
EN

Stack Overflow用户
提问于 2019-05-19 21:20:49
回答 1查看 55关注 0票数 0

我正在尝试编写一个启动葡萄酒.exe文件的bash脚本(Photoshop)。在启动期间,如果有启动错误,则显示消息“断言失败”。

其概念是:

  1. 我用葡萄酒启动Photoshop

wine64 "/home/artik/.wine/drive_c/Program Files/Adobe/Adobe Photoshop CC 2019/Photoshop.exe"

  1. I grep输出,以查看是否发生启动错误:

2>&1 | grep -i Assertion

  1. 如果出现错误,我将停止使用pipefail执行葡萄酒,并尝试重新启动photoshop,直到它启动为止。

我试着写了一个明显错误的小剧本。怎么让它起作用?

代码语言:javascript
复制
#!/bin/sh

set -euxo pipefail

wine64 "/home/artik/.wine/drive_c/Program Files/Adobe/Adobe Photoshop CC 2019/Photoshop.exe" 2>&1 | grep -i -L Assertion

if [ Assertion failed ]
then
        wine64 "/home/artik/.wine/drive_c/Program Files/Adobe/Adobe Photoshop CC 2019/Photoshop.exe" 2>&1 | grep -i -L Assertion
fi
EN

回答 1

Stack Overflow用户

发布于 2019-05-19 22:55:28

一种办法是:

代码语言:javascript
复制
while grep -q Assertion < <(wine64 ... 2>&1)
do
  pkill wine64
done

当找到grep -q时,Assertion将立即成功退出,而且由于输入来自进程替换,因此不会等待wine64退出。这将导致输入循环并重新启动葡萄酒。

如果程序在没有grep查找Assertion的情况下退出,那么grep就会退出,导致循环停止。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56212100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档