У меня есть проблема со сценарием оболочки, который я пишу, в том, что он делает все, что должен, за исключением того, что он не выходит из подменю и не выходит из сценария полностью, когда находится в подменю.
Вот что я сделал до сих пор. Я отредактировал часть из соображений конфиденциальности:
#!/бин/баш
#Теперь главное меню...
пока :
делать
чистый
кошка<<EOF
=======================================
Инструментарий DCO 0.5a
=======================================
Если он не сломался, почините его, пока он не
--------------------------------------
Добро пожаловать!
Пожалуйста, выберите, на каком сайте вы находитесь:
Новый или существующий сайт A (1)
Новый или существующий сайт B (2)
--------------------------------------
EOF
(читать -n1 -s
случай "$REPLY" в
"1") echo "Сейчас переходим в это меню"
спать 1
пока :
делать
чистый
кошка<<EOF
=======================================
Инструментарий DCO 0.5a
========================================
САЙТ А МЕНЮ
---------------------------------------
Пожалуйста, сделайте выбор:
Изменить DA (1)
Изменить сайт (2)
Изменить номер стойки (3)
Проверка подключения порта DA (4)
Проверка уровня освещенности порта DA (5)
Проверить порядок портов DS (6)
Проверка соседей DS LLDP (7)
(Уволиться
---------------------------------------
EOF
(читать -n1 -s
случай "$REPLY" в
"1") echo "Давайте изменим этот DA/DS, введите новый: "
читать да
echo "Установите это сейчас.."
;;
"2") echo "Давайте изменим название сайта, введите новое: "
читать сайт
echo "Установите это сейчас.."
;;
"3") echo "Давайте изменим целевую стойку, введите новую: "
стойка для чтения
echo "Установите это сейчас.."
;;
"4") echo "Проверка подключения к порту DA..."
sshpass -p $password ssh $username@$da.$site "sh int et21/1-24/4 статус"
read -rsp $'Нажмите любую клавишу, чтобы продолжить...\n' -n1 key
;;
"5") echo "Проверка уровней освещенности порта DA..."
sshpass -p $password ssh $username@$da.$site "приемопередатчик sh int et21/1-24/4"
read -rsp $'Нажмите любую клавишу, чтобы продолжить...\n' -n1 key
;;
"6")
sshpass -p $password ssh $username@ds01.$site "sh int desc | inc $rack"
sshpass -p $password ssh $username@ds02.$site "sh int desc | inc $rack"
sshpass -p $password ssh $username@ds03.$site "sh int desc | inc $rack"
sshpass -p $password ssh $username@ds04.$site "sh int desc | inc $rack"
read -rsp $'Нажмите любую клавишу, чтобы продолжить...\n' -n1 key
;;
"7") echo "Проверка соседей DS LLDP..."
sshpass -p $password ssh $username@ds01.$site "sh lldp neigh | inc $rack"
sshpass -p $password ssh $username@ds02.$site "sh lldp neigh | inc $rack"
sshpass -p $password ssh $username@ds03.$site "sh lldp neigh | inc $rack"
sshpass -p $password ssh $username@ds04.$site "sh lldp neigh | inc $rack"
read -rsp $'Нажмите любую клавишу, чтобы продолжить...\n' -n1 key
;;
"Q") перерыв 2 ;;
"q") echo -e $blinkred"ОШИБКА: "$red"Вау! С учетом регистра, приятель!" $ нет ;;
* ) echo "Извините, неверный вариант!" ;;
эсак
спать 1 ) | тройник $today.log
сделано
сломать
;;
"2") echo "Сейчас переходим в это меню"
спать 1
пока :
делать
чистый
кошка<<EOF
=======================================
Инструментарий DCO 0.5a
========================================
МЕНЮ САЙТА Б
---------------------------------------
Пожалуйста, сделайте выбор:
Сменить устройство (1)
Изменить сайт (2)
Изменить номер стойки (3)
Возможность подключения тестового порта (4)
Уровни освещенности тестового порта (5)
Проверить порядок портов (6)
Проверить соседей LLDP (7)
(Уволиться
---------------------------------------
EOF
(читать -n1 -s
случай "$REPLY" в
"1") echo "Давайте изменим этот DA/DS, введите новый: "
читать да
echo "Установите это сейчас.."
;;
"2") echo "Давайте изменим название сайта, введите новое: "
читать сайт
echo "Установите это сейчас.."
;;
"3") echo "Давайте изменим целевую стойку, введите новую: "
стойка для чтения
echo "Установите это сейчас.."
;;
"4") echo "Проверка подключения к порту DA..."
sshpass -p $password ssh $username@$da.$site "sh int et21/1-24/4 статус"
read -rsp $'Нажмите любую клавишу, чтобы продолжить...\n' -n1 key
;;
"5") echo "Проверка уровней освещенности порта DA..."
sshpass -p $password ssh $username@$da.$site "приемопередатчик sh int et21/1-24/4"
read -rsp $'Нажмите любую клавишу, чтобы продолжить...\n' -n1 key
;;
"6")
sshpass -p $password ssh $username@ds01.$site "sh int desc | inc $rack"
sshpass -p $password ssh $username@ds02.$site "sh int desc | inc $rack"
sshpass -p $password ssh $username@ds03.$site "sh int desc | inc $rack"
sshpass -p $password ssh $username@ds04.$site "sh int desc | inc $rack"
read -rsp $'Нажмите любую клавишу, чтобы продолжить...\n' -n1 key
;;
"7") echo "Проверка соседей DS LLDP..."
sshpass -p $password ssh $username@ds01.$site "sh lldp neigh | inc $rack"
sshpass -p $password ssh $username@ds02.$site "sh lldp neigh | inc $rack"
sshpass -p $password ssh $username@ds03.$site "sh lldp neigh | inc $rack"
sshpass -p $password ssh $username@ds04.$site "sh lldp neigh | inc $rack"
read -rsp $'Нажмите любую клавишу, чтобы продолжить...\n' -n1 key
;;
"Q") перерыв 2 ;;
"q") echo -e $blinkred"ОШИБКА: "$red"Вау! С учетом регистра, приятель!" $ нет ;;
* ) echo "Извините, неверный вариант!" ;;
эсак
спать 1 ) | тройник $today.log
сделано
сломать
;;
эсак
)
сделано
У меня есть одно главное меню и два подменю:
Главное меню
|
|_____ Подменю сайта A
|
|_____ Подменю сайта B
С опцией (Q) вернуться в главное меню, но я не могу вернуться в главное меню. Я пытался:
перерыв 2 ;;
И:
возвращаться ;;
Но оба, похоже, вообще не работают. Сценарий просто зацикливается в той же подоболочке.
Любая помощь будет принята с благодарностью. Спасибо!