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

Linux(树莓派3)自启动脚本语法错误求助:排查与修复

树莓派Fluidsynth自启动脚本修复

错误原因

  1. 语法问题:do:;中do与占位符:之间缺少空格,bash无法正确解析关键字与命令的分隔,触发语法报错。
  2. 逻辑顺序错误:原脚本先执行等待子shell,再启动fluidsynth,导致等待逻辑根本检测不到目标进程,完全无效。

修复后的脚本

#!/bin/bash

# 后台启动fluidsynth
fluidsynth -a alsa -g 5 /usr/share/sounds/sf2/FluidR3_GM.sf2 &

# 等待最多5秒,直到fluidsynth进入就绪状态(进程状态为S)
STOP=$((SECONDS + 5))
until [[ $SECONDS -ge $STOP || $(ps -C fluidsynth -o stat= 2>/dev/null) =~ ^S ]]; do
    sleep 0.1  # 减少空循环占用CPU资源
done

# 仅当fluidsynth就绪时执行aconnect
if [[ $(ps -C fluidsynth -o stat= 2>/dev/null) =~ ^S ]]; then
    aconnect 20:0 128:0
fi

关键调整说明

  • 调整执行顺序:先后台启动fluidsynth,再执行等待逻辑,确保能检测到目标进程。
  • 修复语法:给do和:之间添加空格,让bash正确解析命令结构;用sleep 0.1替代空循环,降低CPU占用。
  • 优化鲁棒性:在ps命令后添加2>/dev/null,避免进程未启动时输出错误信息;增加就绪判断,确保aconnect仅在fluidsynth正常就绪后执行。
  • 简化结构:去掉不必要的子shell嵌套,让脚本逻辑更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:50:10