Я новичок в сценариях 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) echo" 1. 1.5.0 »с помощью« esac ».
Сделанный шаг: - Я ничего не вижу в Visual Studio, однако синтаксис цвета отличается от VIM. Таким образом, если удалить «esac» или добавить «case» перед строкой «3) echo 1.5.0», цвет синтаксиса снова станет «нормальным» в Vim.
Если я запускаю сценарий без 3-го case / esac, он работает отлично.
Кажется, что строка 25 esac закрывает первый esac вместо второго (!?)
Заранее спасибо за вашу помощь !
Вам нужно закончить каждое дело с ;;
Тут дело не доедаете 2)
2)
...
esac
;;
3) echo "1. 1.5.0"
...
Взгляните на: shellcheck.net.