意外标记`}'附近的语法错误

无檐小便帽

我正在编写一个shell脚本来制作一个新的保存文件,以防游戏下雨。我正在尝试使其能够使用的每个解锁部分,例如成就,怪物日志,人工制品等,都可以一次全部添加到文件中,或者用户将能够选择哪些部分他们想要添加。我是刚开始编写Shell脚本的新手,我不太确定为什么在运行脚本的内容时会在意外的标记'}'附近出现错误语法错误如果有人可以向我解释我为什么得到该错误,如何解决该错误和/或如何改进我的脚本,将不胜感激。如果这很重要,我也使用Mac OSX。这是我的剧本。

#!/bin/bash
mkdir ~/Desktop/ror_save_unlock_all

echo "This script takes ~/Library/Application Support/com.riskofrain.riskofrain/Save.ini and backs it up to ~/Desktop/ror_save_unlock_all/originalSave. It generates a new Save.ini that is built to your specifications, unlocking all items and achievements or just the ones you choose, and replaces the existing Save.ini with the new one." >> ~/Desktop/ror_save_unlock_all/README.txt

mkdir ~/Desktop/ror_save_unlock_all/originalSave

cp ~/Library/Application\ Support/com.riskofrain.riskofrain/Save.ini ~/Desktop/ror_save_unlock_all/originalSave/

cd ~/Desktop/ror_save_unlock_all

echo -n 'How would you like the new Save.ini to be built? Press 1 for all unlocks or 2 to customize.'
read text
if [ $text = "1" ]
then 
    {
        echo "[Achievement]" >> EOF1

        count=1

        while [ $count -lt 55 ]
        do
          echo "acheivement${count}=\"2\"" >> EOF2
          count=`expr $count + 1`
        done

        echo "[Record]" >> EOF3

        count=1

        while [ $count -lt 31 ]
        do
          echo "mons${count}=\"1\"" >> EOF4
          count=`expr $count + 1`
        done

        count=1

        while [ $count -lt 110 ]
        do
          echo "item${count}=\"1\"" >> EOF5
          count=`expr $count + 1`
        done

        count=1

        while [ $count -lt 10 ]
        do
          echo "artifact${count}=\"1\"" >> EOF6
          count=`expr $count + 1`
        done

        cat EOF1 EOF2 EOF3 EOF4 EOF5 EOF6 > Save.ini 

        rm EOF1 EOF2 EOF3 EOF4 EOF5 EOF6 

        cp -force ~/Desktop/ror_save_unlock_all/Save.ini ~/Library/Application\ Support/com.riskofrain.riskofrain/Save.ini

        echo "Original Save.ini successfully overwritten."

        exit

    }   

elif [ $text = "2" ]; then
    {
        echo "You selected customize. Now we will build a custom Save.ini"
        echo -n "Press 1 if you want to unlock all achievements, press 2 to continue without unlocking all achievements."
        read text
        if [ $text = "1" ]; then 

            {
                echo "[Achievement]" >> EOF1
                count=1
                while [ $count -lt 55 ]
                do
                  echo "acheivement${count}=\"2\"" >> EOF2
                  count=`expr $count + 1`
                done

                echo "All achievements successfully unlocked."
                echo -n "Press 1 to make the Save.ini and replace the existing one with it and then exit, or press 2 to customize it further."
                read text
                if [ $text = "1" ]; then
                    {
                        cat EOF1 EOF2 > Save.ini
                        rm EOF1 EOF2
                        cp -force ~/Desktop/ror_save_unlock_all/Save.ini ~/Library/Application\ Support/com.riskofrain.riskofrain/Save.ini
                        echo "Original Save.ini successfully overwritten."
                        exit
                    }

                elif [ $text = "2" ] then;
                    {
                        echo -n "Press 1 to unlock all monster logs, or press 2 to continue without unlocking all monster logs."
                        read text
                        if [ $text = "1" ]; then
                            {
                                echo "[Record]" >> EOF3 

                                count=1
                                while [ $count -lt 31 ]
                                do
                                  echo "mons${count}=\"1\"" >> EOF4
                                  count=`expr $count + 1`
                                done

                                echo "All achievements successfully unlocked."
                                echo -n "Press 1 to make the Save.ini and replace the existing one with it and then exit, or press 2 to customize it further."
                                read text
                            }
                        }
                    }
                }
miken32

在决定编写脚本之前,您应该对所使用的语言有基本的了解。即使最粗略地阅读文档或任何操作指南页面,也都可以告诉您if语句的正确语法

除此之外,您的脚本还存在许多效率低下的问题。反引号运算符将启动一个子外壳(即的新实例)bash,因此不一定要在循环中执行110次。

这是您已解决的几个较大问题。我建议研究一下函数,以消除大量的代码重复和条件嵌套。

#!/bin/bash
mkdir ~/Desktop/ror_save_unlock_all

echo "This script takes ~/Library/Application Support/com.riskofrain.riskofrain/Save.ini and backs it up to ~/Desktop/ror_save_unlock_all/originalSave. It generates a new Save.ini that is built to your specifications, unlocking all items and achievements or just the ones you choose, and replaces the existing Save.ini with the new one." >> ~/Desktop/ror_save_unlock_all/README.txt

mkdir ~/Desktop/ror_save_unlock_all/originalSave

cp ~/Library/Application\ Support/com.riskofrain.riskofrain/Save.ini ~/Desktop/ror_save_unlock_all/originalSave/

cd ~/Desktop/ror_save_unlock_all

read -n 1 -p 'How would you like the new Save.ini to be built? Press 1 for all unlocks or 2 to customize.' text
if [ $text = "1" ]
    then 
    echo "[Achievement]" > Save.ini
    for count in {1..54}; do
        echo "acheivement${count}=\"2\"" >> Save.ini
    done

    echo "[Record]" >> Save.ini
    for count in {1..30}; do
        echo "mons${count}=\"1\"" >> Save.ini
    done

    for count in {1..109}; do
        echo "item${count}=\"1\"" >> Save.ini
    done

    for count in {1..9}; do
        echo "artifact${count}=\"1\"" >> Save.ini
    done

    cp -force ~/Desktop/ror_save_unlock_all/Save.ini ~/Library/Application\ Support/com.riskofrain.riskofrain/Save.ini
    echo "Original Save.ini successfully overwritten."
    exit

elif [ $text = "2" ]; then
    echo "You selected customize. Now we will build a custom Save.ini"
    read -n 1 -p "Press 1 if you want to unlock all achievements, press 2 to continue without unlocking all achievements." text
    if [ $text = "1" ]; then 
        echo "[Achievement]" > Save.ini
        for count in {1..54}; do
            echo "acheivement${count}=\"2\"" >> Save.ini
        done

        echo "All achievements successfully unlocked."
        read -n 1 -p "Press 1 to make the Save.ini and replace the existing one with it and then exit, or press 2 to customize it further." text
        if [ $text = "1" ]; then
            cp -force ~/Desktop/ror_save_unlock_all/Save.ini ~/Library/Application\ Support/com.riskofrain.riskofrain/Save.ini
            echo "Original Save.ini successfully overwritten."
            exit

        elif [ $text = "2" ]; then
            read -n 1 -p "Press 1 to unlock all monster logs, or press 2 to continue without unlocking all monster logs." text
            if [ $text = "1" ]; then
                echo "[Record]" >> Save.ini

                for count in {1..30}; do
                echo "mons${count}=\"1\"" >> Save.ini
                done

                echo "All monster logs successfully unlocked."
                read -n 1 -p "Press 1 to unlock all monster logs, or press 2 to continue without unlocking all monster logs." text
                if [ $text = "1" ]; then
                    #...
                fi
            fi
        fi
    fi
fi

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

意外标记'then'附近的语法错误

来自分类Dev

意外标记'}'附近的语法错误

来自分类Dev

意外标记附近的语法错误`

来自分类Dev

意外标记“then”附近的语法错误

来自分类Dev

意外标记'echo'附近的语法错误

来自分类Dev

意外标记“&”附近的语法错误(使用“ |&”)

来自分类Dev

意外标记'-bash附近的语法错误

来自分类Dev

Bash:意外标记'done'附近的语法错误

来自分类Dev

意外标记'done'附近的语法错误

来自分类Dev

.bashrc文件语法错误在意外标记“(”附近

来自分类Dev

意外标记`do附近的语法错误

来自分类Dev

意外标记`done'附近的语法错误

来自分类Dev

意外标记“完成”附近的语法错误-读取行时

来自分类Dev

Python - 意外标记“|”附近的语法错误

来自分类Dev

ubuntu,意外标记附近的语法错误`('

来自分类Dev

-bash: 意外标记附近的语法错误 '('

来自分类Dev

语法错误:意外标记(

来自分类Dev

意外标记`('附近的语法错误(可能是bash错误)

来自分类Dev

如何解决错误:意外标记“do”附近的语法错误

来自分类Dev

scp 错误:意外标记“换行符”附近的语法错误

来自分类Dev

Bash 脚本错误:第 167 行:意外标记“then”附近的语法错误

来自分类Dev

git删除脚本抛出错误:意外标记“(”附近的语法错误

来自分类Dev

bash脚本中意外标记`do'附近的语法错误

来自分类Dev

使用sudo运行时,意外标记'do'附近出现语法错误

来自分类Dev

在bash中声明数组时,意外标记“(”附近的语法错误

来自分类Dev

为什么我得到“意外标记'('”附近的语法错误?

来自分类Dev

Jenkinsfile中shell脚本块的意外标记'<'附近的语法错误

来自分类Dev

Jenkinsfile中shell脚本块的意外标记'<'附近的语法错误

来自分类Dev

我正在猛烈抨击:意外标记'('附近的语法错误

Related 相关文章

  1. 1

    意外标记'then'附近的语法错误

  2. 2

    意外标记'}'附近的语法错误

  3. 3

    意外标记附近的语法错误`

  4. 4

    意外标记“then”附近的语法错误

  5. 5

    意外标记'echo'附近的语法错误

  6. 6

    意外标记“&”附近的语法错误(使用“ |&”)

  7. 7

    意外标记'-bash附近的语法错误

  8. 8

    Bash:意外标记'done'附近的语法错误

  9. 9

    意外标记'done'附近的语法错误

  10. 10

    .bashrc文件语法错误在意外标记“(”附近

  11. 11

    意外标记`do附近的语法错误

  12. 12

    意外标记`done'附近的语法错误

  13. 13

    意外标记“完成”附近的语法错误-读取行时

  14. 14

    Python - 意外标记“|”附近的语法错误

  15. 15

    ubuntu,意外标记附近的语法错误`('

  16. 16

    -bash: 意外标记附近的语法错误 '('

  17. 17

    语法错误:意外标记(

  18. 18

    意外标记`('附近的语法错误(可能是bash错误)

  19. 19

    如何解决错误:意外标记“do”附近的语法错误

  20. 20

    scp 错误:意外标记“换行符”附近的语法错误

  21. 21

    Bash 脚本错误:第 167 行:意外标记“then”附近的语法错误

  22. 22

    git删除脚本抛出错误:意外标记“(”附近的语法错误

  23. 23

    bash脚本中意外标记`do'附近的语法错误

  24. 24

    使用sudo运行时,意外标记'do'附近出现语法错误

  25. 25

    在bash中声明数组时,意外标记“(”附近的语法错误

  26. 26

    为什么我得到“意外标记'('”附近的语法错误?

  27. 27

    Jenkinsfile中shell脚本块的意外标记'<'附近的语法错误

  28. 28

    Jenkinsfile中shell脚本块的意外标记'<'附近的语法错误

  29. 29

    我正在猛烈抨击:意外标记'('附近的语法错误

热门标签

归档