我有一些应用程序需要一直在我的笔记本电脑上运行。
我使用 bash 脚本来启动这些应用程序。在我的脚本中,我有一个与此类似的循环:
while true;
do
xterm
done
Run Code Online (Sandbox Code Playgroud)
这将运行一个应用程序(xterm在本例中),如果应用程序崩溃,循环将再次启动它。
这有一个缺点,即该循环没有“干净”的退出。因此,即使用户的意图是 close xterm,循环也会再次启动它。
有没有办法从 bash 脚本启动应用程序,观察它是否正在运行,如果脚本崩溃重新运行它或者如果用户正确关闭它什么都不做?
Cyr*_*rus 40
尝试这个:
while true; do xterm && break; done
Run Code Online (Sandbox Code Playgroud)
应用程序有退出状态代码所以如果某些东西退出正常,它会返回零……如果出现问题,它会抛出另一个数字。这使人们可以深入了解并找出确切的问题。这就是另一个答案正在做的事情。
&&只是检查上一个命令是否是零状态退出,如果是,则中断循环。如果它崩溃了,它会抛出 0 以外的东西,并且&& ...子句不会触发;它会简单地循环返回并运行xterm。
小智 9
在这种while情况下,您可以使用以下内容测试退出状态是否xterm成功:
result=1
while [ $result -ne 0 ]; do
xterm
result=$?
done
Run Code Online (Sandbox Code Playgroud)
$? 变量保存上次执行命令的退出状态。
| 归档时间: |
|
| 查看次数: |
27405 次 |
| 最近记录: |