Bash忽略从Java应用程序退出

Bash忽略从Java应用程序退出,java,bash,shell,Java,Bash,Shell,我有一个简单的BASH脚本,它包装了一个java程序,目的是在应用程序崩溃时重新启动它: STOP=0 while [ "$STOP" -eq 0 ] do echo "Starting" exec java com.site.app.Worker echo "Crashed" sleep 3 done 但是,如果Java进程退出,它也会退出bash脚本,因此该进程将不再启动 例如(指向假课堂): 是否有办法捕获错误(但仍显示错误

我有一个简单的BASH脚本,它包装了一个java程序,目的是在应用程序崩溃时重新启动它:

STOP=0
while [ "$STOP" -eq 0 ]
do
        echo "Starting"
        exec java com.site.app.Worker
        echo "Crashed"
        sleep 3
done
但是,如果Java进程退出,它也会退出bash脚本,因此该进程将不再启动

例如(指向假课堂):


是否有办法捕获错误(但仍显示错误)以允许脚本继续运行?

删除
exec
。这将用JavaVM完全取代当前进程(您的shell)


只要删除它,它就会正常工作。

删除
exec
。这将用JavaVM完全取代当前进程(您的shell)


只要删除它,它就会正常工作。

正如Mat所说,exec所做的就是用Java进程替换当前的shell进程。如果失败了,没有人等着它重新启动exec是一个非常有用的专业工具,但它相当先进

正确使用它的一个例子是,在当前shell中设置变量或优先级的脚本,然后在正在包装的流程中执行exec

似乎没有使用变量“STOP”。我只想说:

while ! java com.site.app.Worker
do
    echo Failed: Sleeping and restarting >&2
    sleep 3 
done

正如Mat所说,exec所做的是用Java进程替换当前的shell进程。如果失败了,没有人等着它重新启动exec是一个非常有用的专业工具,但它相当先进

正确使用它的一个例子是,在当前shell中设置变量或优先级的脚本,然后在正在包装的流程中执行exec

似乎没有使用变量“STOP”。我只想说:

while ! java com.site.app.Worker
do
    echo Failed: Sleeping and restarting >&2
    sleep 3 
done

bash文件在哪里?从哪里编译类?bash文件在哪里?你从哪里编的课?