Программа не входит во второй цикл во второй раз - PullRequest
1 голос
/ 02 июня 2019

Я создаю свой собственный скрипт bash, но когда я выхожу из второго меню, код не позволяет мне войти во второе меню снова.

Единственный способ объяснить эту ошибку - это то, что когда я ставлю 6, чтобы вернуться к первому, а чтение исправляет 6, что вызывает путаницу с проблемой? Но это не имеет смысла, потому что, если бы это исправило 6, это сделало бы эхо "

Может кто-нибудь сказать мне, почему?

  while [ "$myscript" != "6" ]
   do
    echo "Script Menu"
    echo " 1 - Open"
    echo " 2 - Download"            
    echo " 3 - Update && Upgrade"   
    echo " 6 - Exit"

    echo "Choose  Your Script: "
    read myscript

    case $myscript in
            1)
                while [ "$open" != "6" ]
                    do
                        clear
                        echo "Open Menu"
                        echo " 1 - Rythombox"
                        echo " 2 - Anaconda"
                        echo " 3 - VSCode"
                        echo " 4 - Terminal"
                        echo " 6 - <-----Back"

                        echo "Choose Your Open: "
                        read open 

                        case $open in
                            1) 
                                echo "  Opening Rhythmbox"
                                gnome-terminal --tab -- "rhythmbox"
                            ;;
                            6) 
                                echo "<--- Back"
                            ;;

                            *)
                               echo "Not a option!"
                            ;;

                        esac
          done

1 Ответ

1 голос
/ 03 июня 2019

Проблема, как заметил Гордон Дэвиссон, на самом деле в том, что $open по-прежнему равен "6" в последний раз .
Решение состоит в том, чтобы просто выполнить чтение и сравнение входных данных в правильном порядке, а не тестировать [ "$open" != "6" ] до считывания переменной в:

while   echo "Script Menu"
        echo " 1 - Open"
        echo " 2 - Download"            
        echo " 3 - Update && Upgrade"   
        echo " 6 - Exit"
        echo "Choose  Your Script: "
        read myscript
        [ "$myscript" != "6" ]
do
    case $myscript in
    1)  while   clear
                echo "Open Menu"
                echo " 1 - Rythombox"
                echo " 2 - Anaconda"
                echo " 3 - VSCode"
                echo " 4 - Terminal"
                echo " 6 - <-----Back"
                echo "Choose Your Open: "
                read open 
                [ "$open" != "6" ]
        do
            case $open in
            1)  echo "  Opening Rhythmbox"
                gnome-terminal --tab -- "rhythmbox"
                ;;
            6)  echo "<--- Back"
                ;;
            *)  echo "Not a option!"
                ;;
            esac
        done
    esac
done
...