首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法找出脚本中的错误,第107行上的错误:语法错误:文件的意外结束

无法找出脚本中的错误,第107行上的错误:语法错误:文件的意外结束
EN

Stack Overflow用户
提问于 2022-10-23 16:29:11
回答 2查看 77关注 0票数 0

最近,我修改了adi1090x的罗菲脚本之一,以适应单一的罗菲主题,我似乎找不出为什么它不起作用。以下列出了整个代码:

代码语言:javascript
复制
#!/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

当运行时,它显示/home/chaossys/.config/polybar/cuts/scripts/mpd.sh: line 107: syntax error: unexpected end of file,据我所知,这意味着缺少一个括号和/或引号结束,或缺少fi,但我似乎找不到它。

任何和所有的帮助都是感激的。

EN

回答 2

Stack Overflow用户

发布于 2022-10-23 17:09:25

如果您使用https://shellcheck.net (如bash标记摘要中推荐的那样),您将得到以下内容:

代码语言:javascript
复制
Line 53:
rofi_cmd() {
^-- SC1009 (info): The mentioned syntax error was in this function.
           ^-- SC1073 (error): Couldn't parse this brace group. Fix to allow more checks.
 
Line 61:
}
^-- SC1083 (warning): This } is literal. Check expression (missing ;/\n?) or quote it.
 
Line 106:
esac
    ^-- SC1056 (error): Expected a '}'. If you have one, try a ; or \n in front of it.
    ^-- SC1072 (error): Missing '}'. Fix any mentioned problems and try again.

在实际的外壳检查输出中,错误号链接到有用的解释性文本,您可能需要参考。

票数 0
EN

Stack Overflow用户

发布于 2022-10-23 17:30:53

里基,虽然最终没有给出正确的答案,但却帮助我发现,我意外地逃脱了一次紧要关头,这使我无法正确地看到这两个人。简单地删除第60行中的"“允许脚本工作。

谢谢您的网站Rici,我一定会更经常地使用它,因为它让我知道,第61行中的"}“被视为文字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74172860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档