我想知道创建在 MacOSX 中运行应用程序的 bash 脚本的最简单方法(它是基于 UNIX 的系统,所以我认为这是正确的地方)。等待程序退出。如果退出不是崩溃,请再次运行。否则,保持崩溃报告窗口打开并退出。
我希望这个脚本永远运行,直到崩溃或手动终止。
我有一个模糊的想法,但不确定。这是我到目前为止所拥有的:
echo "Launching Autorun…"
if ["$1" -eq "0"]; then
# Application exited successfully. Restarting.
/path/to/application.app
else
# An error occured. Do nothing and exit.
exit
fi
答案1
这就是巴什while 循环做:
while /path/to/application.app
do
:
done
它将运行应用程序,如果成功终止,则运行循环体。:
是个shell 的无操作命令(循环必须有一个主体,所以这就是我们放在那里的);之后它返回顶部并再次运行程序。如果失败,循环将停止运行并且脚本退出。
然而,看起来您正在运行的可能是一个普通的 Mac 应用程序 ( .app
):在这种情况下会出现一些问题。一是您需要使用open
命令,而不是直接运行应用程序目录:open /path/to/application.app
.
另一个是,当您这样做时,open
通常会立即成功终止,无论应用程序继续做什么:这不是绝对通用的,但大多数都会。如果您这样做,您可以使用该-W
选项强制open
阻止,直到应用程序结束:open -W /path/to/application.app
。请注意,如果应用程序已经在运行,则这将等到现有的执行也终止。
其中问题的严重程度取决于您运行的应用程序。如果效果不好,从 shell 执行此操作可能不是最佳选择。在这种情况下,您可能最好使用 AppleScript,您可以在提出不同的要求。
答案2
我已经测试过这个:
#!/bin/bash
while <your_cmd_here>
do
true
done
这是通过测试命令的返回代码(POSIX 样式)来实现的。 0 表示正常,其他任何内容都可以视为错误。