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

如何让shell脚本忽略返回码、报错信息持续运行?

问题解答

查看命令返回码的方法

Shell 中每个命令执行完成后,都会生成一个整数类型的返回码:返回值为0代表执行成功,非0代表执行失败。你可以通过特殊变量$?获取上一条执行命令的返回码,示例如下:

pm2 delete all
echo "pm2 delete all 命令的返回码为:$?"

调整脚本兼容命令执行失败的方案

脚本遇到非0返回码就中断,通常是因为脚本开头开启了严格模式参数set -e/set -eo pipefail,你可以通过两种方式处理:

  • 全局关闭严格错误检查:在脚本开头添加set +e,开启后整个脚本所有命令无论执行成功还是失败,都会继续往下执行。该方式不推荐,会遗漏真正需要处理的异常。
  • 单条命令兼容失败场景:给允许执行失败的命令末尾添加|| true,无论命令本身返回值是多少,该行最终返回值都会是0,不会触发脚本中断,是更推荐的精准控制方案。

针对你给出的runNode.sh脚本,调整后示例如下:

cd /nodeApp && npm run build && pm2 delete all || true && pm2 start UI0
cd /

添加|| true后,即使没有运行中的pm2进程导致pm2 delete all执行失败,后续的服务启动命令也会正常执行。

Docker Tomcat 容器快速停止问题处理

你遇到的容器停止问题,核心原因通常不是命令返回码:Docker 容器的生命周期和 PID 1 进程绑定,执行catalina start时,命令会将 Tomcat 放入后台运行后自身退出,导致 PID 1 进程结束,容器自然终止。
正确的启动方式是使用前台运行命令catalina run,保持主进程常驻。如果需要兼容命令执行失败不中断脚本,可以写成:

catalina run || true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:45:10