Puncte:1

Cum fac bucla în meniul meu de dialog Bash?

drapel ag

Așadar, iată ce am și sunt foarte mulțumit de ceea ce am până acum, dar vreau să adaug o buclă, așa că atunci când o comandă a fost executată, cereți un avertisment „ENTER” și vă va trimite înapoi la meniul...

#!/bin/bash
cmd=(dialog --keep-tite --meniu „Bine ați venit la Ernie’s Utility Menu v1.0:” 22 76 16)

opțiuni=(1 „Ascunde conexiunea”
         2 „Deconectați-vă de la VPN”
         3 „Starea conexiunii”
         4 „Actualizați sistemul”
         5 „Curățați mizeria după actualizare” 
         6 „Deep Clean (troieni și programe malware)”
         7 „Vitezometru (monitor cu bandă)”
         8 „Bmon (monitor cu bandă)”
         9 „Testează viteza lățimii de bandă (în sus și în jos)”
         10 „Zăpadă în terminal”
        )

choices=$(„${cmd[@]}” „${opțiuni[@]}” 2>&1 >/dev/tty)

pentru alegere în $choices 
    do    
        caz $alegere
        1)
            se conectează expressvpn
            ;;
        2)
            deconectare expressvpn
            ;;
        3)
            stare expressvpn && nmcli dev wifi
            ;;
        4)
            sudo apt update && sudo apt upgrade -y #!//&& sudo apt-get dist-upgrade -y nu sunt sigur dacă vreau să fac această parte....
            ;;
        5)
            sudo apt update && sudo apt -f install && sudo dpkg --configure -a && sudo apt clean && sudo apt autoremove && sudo -k && exit
            ;;
        6)
            sudo chkrootkit -d && sudo rkhunter -c --rwo && sudo -k
            ;;
        7)
            vitezometru -l -r wlp2s0 -t lo -m $(( 1024 * 1024 * 3 / 2 ))
            ;;
        8)
            bmon
            ;;
        9)
            speedtest
            ;;
        10)
            ./zăpadă.sh
            ;; 
    esac
Terminat
Terrance avatar
drapel id
O problemă pe care o pot vedea cu această buclă și răspunsul de mai jos este că nu aveți o ieșire. Aș face Opțiunea 11 pentru Ieșire. Atunci linia caz ar fi doar `11) exit;;` dacă nu doriți să utilizați Ctrl+C.
Erniemenendez avatar
drapel ag
Dacă rulați acest script, are două opțiuni în partea de jos, una este „OK” Celălalt este „CANCEL”, care încheie scriptul. Multumesc oricum pentru informatii!!!! S-ar putea să-l folosesc pe alt script! EDIT: da, ai dreptate. „CANCEL” mă întoarce la meniu, lol
Puncte:2
drapel cn

La sfârșitul scriptului adăugați:

citiți -p „Apăsați Enter pentru a continua...”
exec /bin/bash „$0” „$@”

cel exec comanda va reexecuta scriptul, reutilizand procesul curent.

Erniemenendez avatar
drapel ag
SUPERB!!!! Acum scenariul meu este complet!!! tu Glenn Jackman esti un geniu!!! MULȚUMESC!!!
vanadium avatar
drapel cn
Prefer să lucrez cu o buclă infinită în script, apoi să includ o opțiune în meniu pentru a ieși (comandă: `exit`, sau `break`)
Puncte:0
drapel ag

Deci, dacă cineva este interesat să recicleze acest meniu... Așa arată produsul meu final;

#!/bin/bash
cmd=(dialog --keep-tite --meniu „Bine ați venit la Ernie’s Utility Menu v1.0:” 22 76 16)

opțiuni=(1 „Ascunde conexiunea”
         2 „Deconectați-vă de la VPN”
         3 „Starea conexiunii”
         4 „Actualizați sistemul”
         5 „Curățați mizeria după actualizare” 
         6 „Deep Clean (troieni și programe malware)”
         7 „Vitezometru (monitor cu bandă)”
         8 „Bmon (monitor cu bandă)”
         9 „Testează viteza lățimii de bandă (în sus și în jos)”
         10 „Zăpadă în terminal”
# 11 „ieșire”
        )

choices=$(„${cmd[@]}” „${opțiuni[@]}” 2>&1 >/dev/tty)

pentru alegere în $choices 
    do    
        caz $alegere
        1)
            se conectează expressvpn
            ;;
        2)
            deconectare expressvpn
            ;;
        3)
            stare expressvpn && nmcli dev wifi
            ;;
        4)
            sudo apt update && sudo apt upgrade -y #!//&& sudo apt-get dist-upgrade -y nu sunt sigur dacă vreau să fac această parte....
            ;;
        5)
            sudo apt update && sudo apt -f install && sudo dpkg --configure -a && sudo apt clean && sudo apt autoremove && sudo -k
            ;;
        6)
            sudo chkrootkit -d && sudo rkhunter -c --rwo && sudo -k
            ;;
        7)
            vitezometru -l -r wlp2s0 -t lo -m $(( 1024 * 1024 * 3 / 2 ))
            ;;
        8)
            bmon
            ;;
        9)
            speedtest
            ;;
        10)
            ./zăpadă.sh
            ;;
         *)
            Ieșire
      esac
citiți -p „Apăsați Enter pentru a continua...”
exec /bin/bash „$0” „$@”
      Terminat

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.