Điểm:0

Tập lệnh Shell không thoát khỏi menu phụ, trợ giúp!

lá cờ ca

Tôi gặp sự cố với tập lệnh shell mà tôi đang viết trong đó nó thực hiện mọi thứ mà nó phải làm ngoại trừ việc nó sẽ không thoát khỏi menu phụ cũng như sẽ thoát hoàn toàn khỏi tập lệnh khi ở trong menu phụ.

Đây là những gì tôi đã làm cho đến nay. Tôi đã biên tập lại các phần của nó vì tính bảo mật của công việc:

#!/bin/bash



#Bây giờ cho menu chính...

trong khi :
làm

    xa lạ
    con mèo<<EOF
    =================================================================
    Hộp công cụ DCO 0.5a
    =================================================================
    Nếu nó không bị hỏng, sửa nó cho đến khi nó được
    --------------------------------------
    Chào mừng!

    Vui lòng chọn trang web bạn đang ở:

    Một trang web mới hoặc hiện có A (1) 
    Một trang web mới hoặc hiện có B (2)
    --------------------------------------

EOF
( đọc -n1 -s
     trường hợp "$REPLY" trong
    "1") echo "Vào menu đó ngay bây giờ"
    ngủ 1
    trong khi :
làm
    xa lạ
    con mèo<<EOF
    =================================================================
    Hộp công cụ DCO 0.5a
    =================================================================
    TRANG WEB A MENU
    ----------------------------------------
    Vui lòng đưa ra lựa chọn:

    Thay đổi DA (1)
    Thay đổi trang web (2)
    Thay đổi số Rack (3)
    Kiểm tra kết nối cổng DA (4)
    Kiểm tra mức độ ánh sáng cổng DA (5)
    Kiểm tra thứ tự cổng DS (6)
    Kiểm tra DS LLDP hàng xóm (7)
                                (Từ bỏ
    ----------------------------------------

EOF
( đọc -n1 -s
trường hợp "$REPLY" trong
    "1") echo "Hãy thay đổi DA/DS đó, nhập một cái mới: "
    đọc da 
    echo "Cài đặt ngay bây giờ.."
    ;;
    "2") echo "Cho phép thay đổi tên trang web, nhập tên mới: "
    đọc trang web 
    echo "Cài đặt ngay bây giờ.."
    ;;
    "3") echo "Hãy thay đổi giá đích, nhập giá mới: "
    đọc giá 
    echo "Cài đặt ngay bây giờ.."
    ;;
    "4") echo "Đang kiểm tra kết nối cổng DA..."
    sshpass -p $password ssh $username@$da.$site "sh int et21/1-24/4 status"
    đọc -rsp $'Nhấn phím bất kỳ để tiếp tục...\n' -n1 phím
    ;;
    "5") echo "Đang kiểm tra mức ánh sáng cổng DA..."
    sshpass -p $password ssh $username@$da.$site "sh int et21/1-24/4 thu phát"
    đọc -rsp $'Nhấn phím bất kỳ để tiếp tục...\n' -n1 phím
    ;;
    "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" 
    đọc -rsp $'Nhấn phím bất kỳ để tiếp tục...\n' -n1 phím
    ;;
    "7") echo "Đang kiểm tra hàng xóm 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" 
    đọc -rsp $'Nhấn phím bất kỳ để tiếp tục...\n' -n1 phím

    ;;
    "Q") nghỉ 2 ;;
    "q") echo -e $blinkred"ERROR: "$red"Whoa! Phân biệt chữ hoa chữ thường, anh bạn!" $none ;;
    * ) echo "Xin lỗi, tùy chọn không hợp lệ!" ;;
    thoát hiểm

    ngủ 1 ) | tee $today.log
xong
nghỉ
    ;;
    "2") echo "Vào menu đó ngay bây giờ"
    ngủ 1
    trong khi :
làm
    xa lạ
    con mèo<<EOF
    =================================================================
    Hộp công cụ DCO 0.5a
    =================================================================
    TRANG WEB B MENU
    ----------------------------------------
    Vui lòng đưa ra lựa chọn:

    Thay đổi thiết bị (1)
    Thay đổi trang web (2)
    Thay đổi số Rack (3)
    Kiểm tra kết nối cổng (4)
    Kiểm tra mức độ ánh sáng cổng (5)
    Kiểm tra thứ tự cổng (6)
    Kiểm tra hàng xóm LLDP (7)
                                    (Từ bỏ
    ----------------------------------------

EOF
( đọc -n1 -s
    trường hợp "$REPLY" trong
    "1") echo "Hãy thay đổi DA/DS đó, nhập một cái mới: "
    đọc da 
    echo "Cài đặt ngay bây giờ.."
    ;;
    "2") echo "Cho phép thay đổi tên trang web, nhập tên mới: "
    đọc trang web 
    echo "Cài đặt ngay bây giờ.."
    ;;
    "3") echo "Hãy thay đổi giá đích, nhập giá mới: "
    đọc giá 
    echo "Cài đặt ngay bây giờ.."
    ;;
    "4") echo "Đang kiểm tra kết nối cổng DA..."
    sshpass -p $password ssh $username@$da.$site "sh int et21/1-24/4 status"
    đọc -rsp $'Nhấn phím bất kỳ để tiếp tục...\n' -n1 phím
    ;;
    "5") echo "Đang kiểm tra mức ánh sáng cổng DA..."
    sshpass -p $password ssh $username@$da.$site "sh int et21/1-24/4 thu phát"
    đọc -rsp $'Nhấn phím bất kỳ để tiếp tục...\n' -n1 phím
    ;;
    "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" 
    đọc -rsp $'Nhấn phím bất kỳ để tiếp tục...\n' -n1 phím
    ;;
    "7") echo "Đang kiểm tra hàng xóm 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" 
    đọc -rsp $'Nhấn phím bất kỳ để tiếp tục...\n' -n1 phím

    ;;
    "Q") nghỉ 2 ;;
    "q") echo -e $blinkred"ERROR: "$red"Whoa! Phân biệt chữ hoa chữ thường, anh bạn!" $none ;;
    * ) echo "Xin lỗi, tùy chọn không hợp lệ!" ;;
    thoát hiểm

    ngủ 1 ) | tee $today.log
xong
nghỉ
    ;;
thoát hiểm
)
xong

Tôi có một menu chính và hai menu phụ:

Thực đơn chính
 |
 |_____ Trang A Menu phụ
 |
 |_____ Menu phụ Trang web B

Với một tùy chọn (Q) để thoát trở lại menu chính nhưng dường như tôi không thể thoát trở lại menu Chính. Tôi đã thử:

nghỉ 2;;

Và:

trở lại ;;

Nhưng cả hai dường như không hoạt động. Tập lệnh chỉ lặp lại trong cùng một lớp vỏ con.

Bất kỳ sự giúp đỡ sẽ được rất biết ơn nhận được. Cảm ơn!

FedKad avatar
lá cờ cn
Tại sao bạn sử dụng vỏ phụ?
lá cờ ca
Bởi vì tôi cảm thấy đó là con đường để đi. Bạn sẽ làm gì thay vào đó? @FedKad
bac0n avatar
lá cờ cn
loại bỏ chúng ....
FedKad avatar
lá cờ cn
Bạn có thể bắt đầu bằng cách loại bỏ các lớp vỏ phụ. Tuy nhiên, kịch bản của bạn có nhiều lỗi cú pháp và logic. Sẽ là một khởi đầu tốt để kiểm tra nó tại https://www.shellcheck.net/ . Và xin lưu ý rằng đây là trang web Hỏi & Đáp và bạn có thể không nhận được trợ giúp trong việc gỡ lỗi tập lệnh.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.