BASH Script - SubMenu и Nested case - PullRequest
       33

BASH Script - SubMenu и Nested case

0 голосов
/ 07 сентября 2018

Я довольно новичок в скриптах Bash, и я столкнулся с этой проблемой.

echo "Which version of the product ?"
echo "1. v3.0"
echo "2. v2.0"
echo "3. v1.0"
read -p "Select the version needed [ 1 - 3 ] : " SelectMajorVersion
clear

case $SelectMajorVersion in
1) PACKAGE_URL="URL" ;;
2) echo "1. 2.1.0"
   echo "2. 2.1.1"
   echo "3. 2.1.2"
   echo "4. 2.1.3"
   echo "5. 2.1.4"
   read -p "Select the version needed [ 1 - 5 ] : " SelectMinorVersion
   case $SelectMinorVersion in
        1) PACKAGE_URL="URL1" ;;
        2) PACKAGE_URL="URL2" ;;
        3) PACKAGE_URL="URL3" ;;
        4) PACKAGE_URL="URL4" ;;
        5) PACKAGE_URL="URL5" ;;
        *) printf -e "${RED}Error...${NC}\n" && sleep 2 ;;
    esac

3) echo "1. 1.5.0"
   echo "2. 1.5.1"
   echo "3. 1.5.2"
   echo "4. 1.5.3"
   read -p "Select the version needed [ 1 - 8 ] : " SelectMinorVersion
   case $SelectMinorVersion in
        1) PACKAGE_URL="URL11" ;;
        2) PACKAGE_URL="URL22" ;;
        3) PACKAGE_URL="URL33" ;;
        4) PACKAGE_URL="URL44" ;;

*) printf -e "${RED}Error...${NC}\n" && sleep 2 ;;
   esac
esac

Это сообщение об ошибке после выбора "основной" версии:

./menu3.sh: line 27: syntax error near unexpected token `)'
./menu3.sh: line 27: `    3)  echo "1. 1.5.0"'

Проблема, похоже, связана непосредственно перед "3) эхо" 1. 1.5.0 "с" esac ".

шаг сделан: - Я ничего не вижу с Visual Studio, однако синтаксис цвета отличается с VIM. Так что если убрать «esac» или добавить «case» перед строкой «3) echo 1.5.0», цвет синтаксиса снова будет «нормальным» в Vim.

  • Если я запускаю скрипт без 3-го регистра / esac, он отлично работает.

  • Кажется, линия esac 25 закрывает первый esac вместо второго (!?)

Заранее благодарю за помощь!

1 Ответ

0 голосов
/ 07 сентября 2018

Вы должны закончить каждый случай с ;;

Здесь вы не заканчиваете дело 2)

2)
    ...
    esac
;;
3) echo "1. 1.5.0"
...
...