qq_62105744 2024-09-26 11:02 采纳率: 0%
浏览 9

有谁知道"未预期的记号 "else" 附近有语法错误"怎么解决吗?

编写了一个shell文件用于在linux上利用wine启动游戏.
我用的系统是manjaro linux.
在我运行时出现错误

./test.sh: 行 25: 未预期的记号 "else" 附近有语法错误
./test.sh: 行 25: `else'

在网上找了半天都没解决办法
文件如下


```bash
#!/bin/bash

if mount | grep "/dev/nvme0n1p3";then
echo "Which Hoyo do you want to open?    [GenshinImpact/g or StarRail/r]"
read gname

if test -z "$(mount | grep "/dev/nvme0n1p3")";then
    PATH=`mount | grep /dev/nvme0n1p3 | awk -F " " '{print $3}'`
    if [$PATH = /home/cz/ntfs];then
        if [$gname = r];then
            mangohud wine /home/cz/work/patch/jadeite.exe "/home/cz/ntfs/Program Files/miHoYo Launcher/games/Star Rail Game/StarRail.exe"
        elif [$gname = g];then
            mangohud wine "/home/cz/ntfs/Program Files/HoYoPlay/games/Genshin Impact game/GenshinImpact.exe"
        fi
    else
        sudo unmount $PATH
        sudo ntfs-3g /dev/nvme0n1p3 /home/cz/ntfs
        if [$gname = r];then
            mangohud wine /home/cz/work/patch/jadeite.exe "/home/cz/ntfs/Program Files/miHoYo Launcher/games/Star Rail Game/StarRail.exe"
        elif [$gname = g];then
            mangohud wine "/home/cz/ntfs/Program Files/HoYoPlay/games/Genshin Impact game/GenshinImpact.exe"
        else
            echo "Are you sure?"
        fi
else
    sudo ntfs-3g /dev/nvme0n1p3 /home/cz/ntfs
    if [$gname = r];then
        mangohud wine /home/cz/work/patch/jadeite.exe "/home/cz/ntfs/Program Files/miHoYo Launcher/games/Star Rail Game/StarRail.exe"
    elif [$gname = g];then
        mangohud wine "/home/cz/ntfs/Program Files/HoYoPlay/games/Genshin Impact game/GenshinImpact.exe"
    else
        echo "Are you sure?"
    fi
fi





  • 写回答

1条回答 默认 最新

  • 专家-吕布[在线] 2024-09-26 14:41
    关注

    引自当下最先进的AI大模型:ChatGPT o1-preciew,若有帮助,还望采纳。


    你遇到的错误“未预期的记号 'else' 附近有语法错误”通常是由于条件语句的格式不正确造成的。在 Bash 中,[] 之间需要有空格。请检查以下几点:

    1. 条件语句的格式:确保 if 条件语句的格式正确,应该在 [] 之间添加空格。
    2. 分支结构的嵌套:确保每个 if 都有对应的 fi

    你可以修改你的代码如下:

    #!/bin/bash
    
    if mount | grep "/dev/nvme0n1p3"; then
        echo "Which Hoyo do you want to open?    [GenshinImpact/g or StarRail/r]"
        read gname
    
        if test -z "$(mount | grep "/dev/nvme0n1p3")"; then
            PATH=$(mount | grep /dev/nvme0n1p3 | awk -F " " '{print $3}')
            if [ "$PATH" = "/home/cz/ntfs" ]; then
                if [ "$gname" = "r" ]; then
                    mangohud wine /home/cz/work/patch/jadeite.exe "/home/cz/ntfs/Program Files/miHoYo Launcher/games/Star Rail Game/StarRail.exe"
                elif [ "$gname" = "g" ]; then
                    mangohud wine "/home/cz/ntfs/Program Files/HoYoPlay/games/Genshin Impact game/GenshinImpact.exe"
                fi
            else
                sudo umount "$PATH"
                sudo ntfs-3g /dev/nvme0n1p3 /home/cz/ntfs
                if [ "$gname" = "r" ]; then
                    mangohud wine /home/cz/work/patch/jadeite.exe "/home/cz/ntfs/Program Files/miHoYo Launcher/games/Star Rail Game/StarRail.exe"
                elif [ "$gname" = "g" ]; then
                    mangohud wine "/home/cz/ntfs/Program Files/HoYoPlay/games/Genshin Impact game/GenshinImpact.exe"
                else
                    echo "Are you sure?"
                fi
            fi
        else
            sudo ntfs-3g /dev/nvme0n1p3 /home/cz/ntfs
            if [ "$gname" = "r" ]; then
                mangohud wine /home/cz/work/patch/jadeite.exe "/home/cz/ntfs/Program Files/miHoYo Launcher/games/Star Rail Game/StarRail.exe"
            elif [ "$gname" = "g" ]; then
                mangohud wine "/home/cz/ntfs/Program Files/HoYoPlay/games/Genshin Impact game/GenshinImpact.exe"
            else
                echo "Are you sure?"
            fi
        fi
    fi
    

    修改要点:

    • 在所有的 [] 之间添加了空格。
    • 使用 "$变量名" 来引用变量,以避免潜在的空格问题。

    请试试这个修改后的代码,看看能否解决你的问题!

    评论

报告相同问题?

问题事件

  • 创建了问题 9月26日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?