ฉันมีปัญหากับเชลล์สคริปต์ที่ฉันกำลังเขียนอยู่ว่ามันทำทุกอย่างที่มันควรจะทำ ยกเว้นว่ามันจะไม่ออกจากเมนูย่อยและจะไม่ออกจากสคริปต์โดยสิ้นเชิงเมื่ออยู่ในเมนูย่อย
นี่คือสิ่งที่ฉันทำไปแล้ว ฉันได้แก้ไขบางส่วนของมันเนื่องจากความลับในการทำงาน:
#!/bin/bash
#ตอนนี้สำหรับเมนูหลัก...
ในขณะที่ :
ทำ
แจ่มใส
แมว<<EOF
======================================
กล่องเครื่องมือ DCO 0.5a
======================================
ถ้ามันยังไม่พังก็ซ่อมมันจนได้
--------------------------------------
ยินดีต้อนรับ!
โปรดเลือกไซต์ที่คุณอยู่ใน:
เว็บไซต์ใหม่หรือที่มีอยู่ A (1)
ไซต์ B ใหม่หรือที่มีอยู่ (2)
--------------------------------------
อฟ
( อ่าน -n1 -s
กรณี "$REPLY" ใน
"1") echo "ไปที่เมนูนั้นทันที"
นอน1
ในขณะที่ :
ทำ
แจ่มใส
แมว<<EOF
======================================
กล่องเครื่องมือ DCO 0.5a
=======================================
เว็บไซต์เมนู
---------------------------------------
โปรดเลือก:
เปลี่ยน DA (1)
เปลี่ยนเว็บไซต์ (2)
เปลี่ยนหมายเลขแร็ค (3)
ทดสอบการเชื่อมต่อพอร์ต DA (4)
ทดสอบระดับไฟพอร์ต DA (5)
ตรวจสอบลำดับพอร์ต DS (6)
ตรวจสอบเพื่อนบ้าน DS LLDP (7)
(ล้มเลิก
---------------------------------------
อฟ
( อ่าน -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 สถานะ"
อ่าน -rsp $'กดปุ่มใดก็ได้เพื่อดำเนินการต่อ...\n' -n1 ปุ่ม
;;
"5") echo "กำลังทดสอบระดับแสงพอร์ต DA..."
sshpass -p $password ssh $username@$da.$site "ตัวรับส่งสัญญาณ sh int et21/1-24/4"
อ่าน -rsp $'กดปุ่มใดก็ได้เพื่อดำเนินการต่อ...\n' -n1 ปุ่ม
;;
"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"
อ่าน -rsp $'กดปุ่มใดก็ได้เพื่อดำเนินการต่อ...\n' -n1 ปุ่ม
;;
"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"
อ่าน -rsp $'กดปุ่มใดก็ได้เพื่อดำเนินการต่อ...\n' -n1 ปุ่ม
;;
"Q") พัก 2 ;;
"q") echo -e $blinkred"ข้อผิดพลาด: "$red"โอ้โฮ! $ไม่มี ;;
* ) echo "ขออภัย ตัวเลือกไม่ถูกต้อง!" ;;
เอสแซค
นอน 1 ) | ที$today.log
เสร็จแล้ว
หยุดพัก
;;
"2") echo "ไปที่เมนูนั้นเดี๋ยวนี้"
นอน1
ในขณะที่ :
ทำ
แจ่มใส
แมว<<EOF
======================================
กล่องเครื่องมือ DCO 0.5a
=======================================
ไซต์ B เมนู
---------------------------------------
โปรดเลือก:
เปลี่ยนอุปกรณ์ (1)
เปลี่ยนเว็บไซต์ (2)
เปลี่ยนหมายเลขแร็ค (3)
ทดสอบการเชื่อมต่อพอร์ต (4)
ทดสอบระดับแสงพอร์ต (5)
ตรวจสอบลำดับพอร์ต (6)
ตรวจสอบเพื่อนบ้าน LLDP (7)
(ล้มเลิก
---------------------------------------
อฟ
( อ่าน -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 สถานะ"
อ่าน -rsp $'กดปุ่มใดก็ได้เพื่อดำเนินการต่อ...\n' -n1 ปุ่ม
;;
"5") echo "กำลังทดสอบระดับแสงพอร์ต DA..."
sshpass -p $password ssh $username@$da.$site "ตัวรับส่งสัญญาณ sh int et21/1-24/4"
อ่าน -rsp $'กดปุ่มใดก็ได้เพื่อดำเนินการต่อ...\n' -n1 ปุ่ม
;;
"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"
อ่าน -rsp $'กดปุ่มใดก็ได้เพื่อดำเนินการต่อ...\n' -n1 ปุ่ม
;;
"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"
อ่าน -rsp $'กดปุ่มใดก็ได้เพื่อดำเนินการต่อ...\n' -n1 ปุ่ม
;;
"Q") พัก 2 ;;
"q") echo -e $blinkred"ข้อผิดพลาด: "$red"โอ้โฮ! $ไม่มี ;;
* ) echo "ขออภัย ตัวเลือกไม่ถูกต้อง!" ;;
เอสแซค
นอน 1 ) | ที$today.log
เสร็จแล้ว
หยุดพัก
;;
เอสแซค
)
เสร็จแล้ว
ฉันมีหนึ่งเมนูหลักและสองเมนูย่อย:
เมนูหลัก
|
|_____ ไซต์ A เมนูย่อย
|
|_____ เมนูย่อยของไซต์ B
ด้วยตัวเลือก (Q) เพื่อออกจากการกลับไปที่เมนูหลัก แต่ฉันไม่สามารถออกจากการกลับไปที่เมนูหลักได้ ฉันพยายามแล้ว:
พัก 2 ;;
และ:
กลับ ;;
แต่ทั้งสองดูเหมือนจะไม่ทำงานเลย สคริปต์จะวนกลับภายในเชลล์ย่อยเดียวกัน
ความช่วยเหลือใด ๆ ที่จะได้รับการขอบคุณมาก ขอบคุณ!