Jak utworzyć menu wyboru za pomocą instrukcji Wybierz w Bash Shell

Jak utworzyć menu wyboru za pomocą instrukcji Wybierz w Bash Shell

Wszyscy bardzo często używamy skryptów bash do automatyzacji nudnych i powtarzających się zadań. Czasami w naszych skryptach musimy zapytać
Użytkownik, aby interaktywnie dokonać jednego lub więcej opcji: W tym samouczku zobaczymy, jak użyć instrukcji Bash Shell Select, aby wykonać taką operację w bardzo kilku wierszach kodu.

W tym samouczku nauczysz się:

  • Jak korzystać z instrukcji Bash Select
  • Jak dostosować monit menu Wybierz
Jak utworzyć menu wyboru za pomocą instrukcji Wybierz w Bash Shell

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny od rozkładu
Oprogramowanie Powłoka bash
Inny Bez specjalnych wymagań
Konwencje # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Wybierz instrukcję

Skrypty jest jedną z najczęstszych umiejętności, które powinien posiadać administrator systemu, aby zautomatyzować powtarzalne
zadania i uczyń je mniej podatnymi na błędy. W niezbyt skomplikowanych przypadkach powłoka jest idealnym narzędziem do użycia do pracy. Bash, The Bourne ponownie Shell, jest najczęściej używaną skorupą w świecie GNU/Linux. Ta powłoka zapewnia bardzo przydatne wybierać oświadczenie. Jego cel jest opisany w następujący sposób:

Wybierz słowa z listy i wykonaj polecenia



Opis jest dość oczywisty. Instrukcja pozwala nam interaktywnie odbierać dane wejściowe od użytkownika, generując ponumerowaną listę opcji i zachęcając go do wybrania jednego. Zobaczmy, jak jest używany:

Wybierz nazwę [W słowa…;] DO Polecenia; zrobione

Składnia jest bardzo podobna do składni tradycyjnej dla pętli w Bash, z wyjątkiem użycia wybierać Słowo kluczowe. Wybierz instrukcję działa jednak w inny sposób. Zobaczmy przykład. Załóżmy, że chcemy poprosić użytkownika o wybranie jednego z plików zawartych w katalogu. Oto, co moglibyśmy napisać:

$ files = "$ (ls -a .) „$ Wybierz nazwę pliku w $ pliki; do echo” $ plik ”; Done 1) File1 2) File2 3) File3 #?

Wyjaśnijmy, co zrobiliśmy. Przede wszystkim uzyskaliśmy listę wszystkich plików obecnych w katalogu (w tym przypadku bieżącego katalogu roboczego) za pomocą LS polecenie i określenie -A opcja (skrót --prawie wszystko), aby wykluczyć dorozumiane . I z zwróconej listy, którą przypisaliśmy do akta zmienny.

Następnie przystąpiliśmy do korzystania z wybierać oświadczenie. Powyższe jest bardzo podstawowym przykładem: zapewniliśmy wynik rozszerzenia plik zmienna jako lista wyborów, które należy uwzględnić. Zauważ, że uniknęliśmy cytowania rozszerzenia $ pliki celowo, aby uzyskać dzielenie słów: Gdy rozszerzenie jest cytowane z podwójnymi cytatami dzielenie słów jest tłumiony, więc przestrzenie nie są używane jako delimitory słów, a wynik ekspansji jest uważany za całość. W tym przypadku nie chcemy: potrzebujemy każdego słowa, aby być używane jako wybór w wygenerowanym menu.



Słowa uzyskane z rozszerzenia zmiennej są wydrukowane na Stderr (Standardowy błąd). Każdy z nich jest poprzedzony i powiązany z liczbą, czego użytkownik użyje, aby odwołać się do niego. Po wyświetleniu wszystkich elementów użytkownik jest poproszony o wprowadzenie swojego wyboru. To, co jest wyświetlane, to PS3 monit, który domyślnie jest ustawiony #?.

Co się stanie, gdy użytkownik wykonuje wybór? Zobaczmy:

$ files = "$ (ls -a .) „$ Wybierz nazwę pliku w $ pliki; do echo” Wybrałeś $ fileName ”; Done 1) File1 2) File2 3) File3 #? 1 Wybrałeś plik 1 #?

Wybór, do którego weszliśmy, 1, jest czytany z stdin (Standardowe wejście), a jeśli wprowadzony numer jest jednym z dostępnych, odpowiednie słowo („Plik 1” w przykładzie) jest przypisane do,Nazwa pliku zmienny. W naszym przykładzie określiliśmy echo "$ nazwa pliku" jako polecenie, które ma być wykonane po wykonaniu wyboru: W rezultacie: wybrane słowo jest drukowane na ekranie. Liczba, którą wprowadzamy, aby określić nasz wybór, jest również przechowywany w zmiennej: ODPOWIEDŹ.

Możesz zauważyć dziwną rzecz, jaką wydarzyło się w powyższym przykładzie: kiedy dokonaliśmy naszego wyboru, po wykonaniu polecenia zostaliśmy ponownie poproszeni o wybór, dlaczego? Stało się to, ponieważ nie dostarczyliśmy przerwa
Komenda. Możemy to łatwo naprawić:

$ files = "$ (ls -a .) „$ Wybierz nazwę pliku w $ pliki; do echo” Wybrałeś $ fileName ”; break; dision 1) plik1 2) plik2 3) plik3 #? 1 Wybrałeś plik 1

Co jeśli nie zapewnimy żadnego wyboru? Monitu jest po prostu powtarzany, dopóki nie zrobimy:

Wybierz nazwę pliku w $ Files; echo „Wybrałeś $ filename”; przerwa; Dane 1) Plik1 2) Plik2 3) Plik3 #? 1) File1 2) Plik2 3) Plik3 #? 

Co jeśli wprowadzimy numer, którego zamiast tego nie ma na liście? W takim przypadku zmienna, której używamy, nazwa pliku w naszym przypadku jest ustawiona zero.

Zmiana monitu wyboru

Jak już widzieliśmy, monit używany przez powłokę w kontekście instrukcji wybranej jest PS3 monit, który domyślnie ma #? String ma wartość. To nie jest zbyt przyjazne dla użytkownika, więc możemy chcieć go zmienić i zamiast tego użyć czegoś bardziej opisowego. Jak możemy to zrobić? Bardzo proste: musimy zmienić wartość PS3 parametr:

$ Ps3 = "Wprowadź swój wybór:"


Następnym razem użyjemy wybierać Oświadczenie, zauważymy zmianę:

Wybierz nazwę pliku w $ Files; echo "Wybrałeś $ filename $ odpowiedź"; przerwa; Dane 1) File1 2) Plik2 3) Plik3 Wprowadź swój wybór: 

Zmiana dokonana na zmienną będzie skuteczna tylko dla bieżącej sekcji powłoki, a jeśli my eksport Zmienna, także we wszystkich jej dzieciach:

$ Export PS3 = "Wprowadź swój wybór:"

Zmiana pozostaje jednak tymczasowa, dopóki nie ustanowimy PS3 zmienna wewnątrz .Bashrc plik. PS3 to tylko jedna z podpowiedzi używanych w BASH: Sprawdź nasz artykuł Bash, jeśli chcesz dowiedzieć się więcej na ten temat.

Wnioski

W tym samouczku nauczyliśmy się używać bash wybierać oświadczenie. Widzieliśmy, jak to działa i jak możemy go użyć do utworzenia menu wyboru, aby interaktywnie poprosić użytkownika o wykonanie wyboru. Wreszcie widzieliśmy, jak dostosować monit wyświetlany w menu wyboru, modyfikując powłokę PS3 parametr.

Powiązane samouczki Linux:

  • Mastering Bash Script Loops
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Zagnieżdżone pętle w skryptach Bash
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Obsługa danych wejściowych użytkownika w skryptach Bash
  • Samouczek debugowania GDB dla początkujących
  • Hung Linux System? Jak uciec do wiersza poleceń i…
  • Jak skonfigurować serwer OpenVPN na Ubuntu 20.04