You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

我的Shell脚本未按预期运行:Java程序后echo命令无法执行

Java程序运行后脚本后续命令不执行的解决办法

你的问题出在java -jar命令的运行方式上:这个命令默认是前台运行的,会让bash脚本暂停执行,直到Java程序完全退出,才会继续往下跑echo test2。只要你的Java服务器一直在运行,test2就永远不会被输出。

给你两种解决思路:

1. 让Java程序后台运行,脚本继续执行

把Java命令改成后台执行,在末尾加&,还可以把输出重定向到日志文件,避免干扰终端:

java -jar /home/Alex/Desktop/server/server.jar > server.log 2>&1 &

修改后的完整脚本:

#!/bin/bash
functest(){
echo "starting"
# 后台运行Java并将输出写入日志
java -jar /home/Alex/Desktop/server/server.jar > server.log 2>&1 &
}

cd server
echo test
functest
echo test2

这样脚本会把Java进程放到后台,立刻执行后面的echo test2。

2. 等待Java程序正常退出后再执行后续命令

如果你的Java程序是一次性任务(不是常驻服务),那得检查程序本身有没有正常退出的逻辑。要是它是常驻服务器,你可以手动用Ctrl+C终止Java进程,脚本就会继续执行echo test2了。


内容的提问来源于stack exchange,提问作者utubysdog101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:50:22