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

执行Start-Batch.sh报line1语法错误:意外token`|'如何解决?

报错原因排查
  • 直接报错原因:脚本第一行单独存在无意义的|管道符,管道符必须用于连接前后两个命令,单独出现属于无效语法,shell解析第一行时直接触发syntax error near unexpected token |'`报错。
  • 脚本还存在多个潜在语法错误,需同步修复:
    1. 单引号嵌套错误:给变量a赋值时外层已经使用单引号,内层awk的{'print $2'}的单引号会提前截断外层字符串,导致语法解析混乱。
    2. if判断语法不规范:if["${a:-0}" ==0 ]中[是shell内置命令,必须和后面的判断条件、末尾的]都用空格隔开,同时==两侧也需要加空格,否则会被识别为无效字符串报错。
    3. PID匹配逻辑冗余:多层ps+grep的组合容易匹配到grep自身进程,且如果出现多个匹配PID时判断逻辑会失效。
修复后的完整脚本
#!/bin/bash
# 用pgrep直接获取对应进程PID,更简洁稳定
a=$(pgrep -f "SpringBoot.jar")
echo "PID: $a"
if [ "${a:-0}" == "0" ]; then
    nohup /opt/../java -Xms1g -Xmx3g -jar SpringBoot.jar & disown
else
    echo "Already Job is running, Please stop the orginal process"
fi
验证执行方法
  • 给脚本添加执行权限:chmod +x Start-Batch.sh
  • 执行前先校验语法合法性:bash -n Start-Batch.sh,无输出即代表语法正常
  • 直接执行脚本即可正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:09:03