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
相关产品推荐
相关产品推荐

