我正在尝试编写一个启动葡萄酒.exe文件的bash脚本(Photoshop)。在启动期间,如果有启动错误,则显示消息“断言失败”。
其概念是:
wine64 "/home/artik/.wine/drive_c/Program Files/Adobe/Adobe Photoshop CC 2019/Photoshop.exe"
2>&1 | grep -i Assertion
pipefail执行葡萄酒,并尝试重新启动photoshop,直到它启动为止。我试着写了一个明显错误的小剧本。怎么让它起作用?
#!/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发布于 2019-05-19 22:55:28
一种办法是:
while grep -q Assertion < <(wine64 ... 2>&1)
do
pkill wine64
done当找到grep -q时,Assertion将立即成功退出,而且由于输入来自进程替换,因此不会等待wine64退出。这将导致输入循环并重新启动葡萄酒。
如果程序在没有grep查找Assertion的情况下退出,那么grep就会退出,导致循环停止。
https://stackoverflow.com/questions/56212100
复制相似问题