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

Rofi MPD控制脚本报错:第107行语法错误意外文件结束

问题排查与修复

你的脚本报错是因为**rofi_cmd()函数中rofi命令的最后一行多了一个反斜杠\**,这个反斜杠会让shell认为命令尚未结束,将下一行的函数闭合符}当作rofi的参数处理,导致函数无法正确闭合,最终触发"unexpected end of file"语法错误。

修复后的完整脚本

#!/usr/bin/env bash

## Music Player Controls

# Import Current Theme
dir="~/.config/polybar/cuts/scripts/rofi"
theme="$dir/mpd.rasi"

# Elements
status="`mpc status`"
if [[ -z "$status" ]]; then
    prompt='Offline'
    mesg="MPD is Offline"
else
    prompt="`mpc -f "%artist%" current`"
    mesg="`mpc -f "%title%" current` :: `mpc status | grep "#" | awk '{print $3}'`"
fi

if [[ ${status} == *"[playing]"* ]]; then
    option_1=" Pause"
else
    option_1=" Play"
fi

option_2=" Stop"
option_3=" Previous"
option_4=" Next"
option_5=" Repeat"
option_6=" Random"

# Toggle Actions
active=''
urgent=''
# Repeat
if [[ ${status} == *"repeat: on"* ]]; then
    active="-a 4"
elif [[ ${status} == *"repeat: off"* ]]; then
    urgent="-u 4"
else
    option_5=" Parsing Error"
fi

# Random
if [[ ${status} == *"random: on"* ]]; then
    [ -n "$active" ] && active+",5" || active="-a 5"
elif [[ ${status} == *"random: off"* ]]; then
    [ -n "$urgent" ] && urgent+",5" || urgent="-u 5"
else
    option_6=" Parsing Error"
fi

#Finally, the actual command.
rofi_cmd() {
    rofi \
        -dmenu \
        -p "$prompt" \
        -mesg "$mesg" \
        ${active} ${urgent} \
        -markup-rows \
        -theme "$theme"
}

# Pass variables to rofi dmenu
run_rofi() {
    echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5\n$option_6" | rofi_cmd
}

# Execute Command
run_cmd() {
    if [[ "$1" == '--opt1' ]]; then
        mpc -q toggle && notify-send -u low -t 1000 " `mpc current`"
    elif [[ "$1" == '--opt2' ]]; then
        mpc -q stop
    elif [[ "$1" == '--opt3' ]]; then
        mpc -q prev && notify-send -u low -t 1000 " `mpc current`"
    elif [[ "$1" == '--opt4' ]]; then
        mpc -q next && notify-send -u low -t 1000 " `mpc current`"
    elif [[ "$1" == '--opt5' ]]; then
        mpc -q repeat
    elif [[ "$1" == '--opt6' ]]; then
        mpc -q random
    fi
}

# Actions
chosen="$(run_rofi)"
case ${chosen} in
    $option_1)
        run_cmd --opt1
        ;;
    $option_2)
        run_cmd --opt2
        ;;
    $option_3)
        run_cmd --opt3
        ;;
    $option_4)
        run_cmd --opt4
        ;;
    $option_5)
        run_cmd --opt5
        ;;
    $option_6)
        run_cmd --opt6
        ;;
esac

关键修复点

将rofi_cmd()函数中rofi命令的最后一行-theme "$theme" \末尾的反斜杠删除,改为-theme "$theme",确保函数能正确闭合,shell可以正常解析后续代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:05:19