Ben*_*den 8 osx bash shell-script
我想知道创建将在 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
Run Code Online (Sandbox Code Playgroud)
Mic*_*mer 13
这就是 Bash while 循环所做的:
while /path/to/application.app
do
:
done
Run Code Online (Sandbox Code Playgroud)
它将运行应用程序,如果它成功终止,则运行循环体。:是shell 的无操作命令(循环必须有一个主体,所以这就是我们放在那里的);之后它会回到顶部并再次运行程序。如果失败,循环将停止运行并退出脚本。
但是,看起来您正在运行的可能是一个普通的 Mac 应用程序 ( .app):在这种情况下会出现一些问题。一种是需要使用open命令,而不是直接运行应用程序目录:open /path/to/application.app.
另一个是,当你这样做open时,通常会立即成功终止,不管应用程序继续做什么:这不是绝对通用的,但大多数都会。如果您这样做,您可以使用-W选项强制open阻止,直到应用程序结束:open -W /path/to/application.app。请注意,如果应用程序已经在运行,这将等到现有执行也终止。
其中有多少问题取决于您正在运行的应用程序。如果它不能很好地发挥作用,那么从 shell 执行此操作可能不是最佳选择。在这种情况下,您最好使用 AppleScript,您可以在Ask Different上询问。
我已经测试过这个:
#!/bin/bash
while <your_cmd_here>
do
true
done
Run Code Online (Sandbox Code Playgroud)
这是通过测试命令的返回代码(POSIX 样式)来实现的。0 表示正常,其他任何内容都可以视为错误。