Linux „Getopts”

Linux „Getopts”
„Getopts” to bardzo przydatne polecenie w Linux, które jest w większości włączone do scenariuszy Bash, aby brać flagi i argumenty jako dane wejściowe od użytkownika. Aby dalej rozwinąć wykorzystanie tego polecenia w Linux Mint 20, będziemy dzielić się z wami dwoma różnymi przykładami jego użycia w tym artykule.

Przykłady „getopts” w Linux Mint 20:

Aby uzyskać łatwiejsze i lepsze zrozumienie polecenia „getopts” w Linux Mint 20, zaprojektowaliśmy dla was dwa przykładowe scenariusze. Przed przejściem do tych scenariuszy możesz sprawdzić instrukcję obsługi komendy „getopts” w terminalu Linux Mint 20, abyś mógł uzyskać podstawowy pomysł na składnię tego polecenia. Możesz zobaczyć podręcznik pomocy tego polecenia, wykonując polecenie „Pomoc”:

$ getopts - -help

Podręcznik pomocy polecenia „getopts” będzie zawierać krótki opis użycia tego polecenia wraz z jego składnią, jak pokazano na poniższym obrazku:

Teraz, kiedy przeszliśmy przez instrukcję pomocy polecenia „getopts”, możemy kontynuować nasze przykładowe scenariusze w następujący sposób:

Przypadek nr 1: Przekazywanie flag do skryptu Bash w celu wykonania w Linux Mint 20:

W tym przykładzie będziemy tworzyć skrypt bash, który przyjmie flagę jako dane wejściowe od użytkownika wraz z poleceniem wykonania tego skryptu Bash. W zależności od wartości dostarczonej flagi, odpowiednie wyjście zostanie wyświetlone. Szczegółowy opis kroków związanych z tym scenariuszem jest następujący:

Krok 1: Pisanie skryptu Bash:

Najpierw napiszemy skrypt bash w naszym katalogu domowym. Nazwali ten plik jako getopts.cii. Zawartość tego skryptu Bash pokazano na poniższym obrazku. W skrypcie Bash pokazanym poniżej mamy pętlę „while”, która działa na poleceniu „getopts”. Tutaj to polecenie „getopts” służy do przyjmowania flagi jako danych wejściowych od użytkownika. Wartość tej flagi może być albo „r”, „y” lub „g” reprezentujących odpowiednio „czerwony”, „żółty” i „zielony”. Zmienna „Opcja” zostanie użyta do przechowywania wartości flagi dostarczonej przez użytkownika. Następnie użyliśmy instrukcji „Case” o wartości dostarczonej flagi, która wyświetli dostosowany komunikat w zależności od wartości flagi „opcji”. Na koniec zamknęliśmy blok „sprawy” z instrukcją „ESAC” i blokiem „do” z instrukcją „gotów”.

Krok 2: Testowanie skryptu Bash:

Po utworzeniu i zapisaniu naszego skryptu Bash, teraz nadszedł czas, aby go uruchomić. Będziemy testować wszystkie przypadki jeden po drugim. Najpierw uruchomimy skrypt bash z flagą „-R”, aby sprawdzić, czy daje on prawidłowe dane wyjściowe, czy nie w następujący sposób:

$ bash getopts.sh -r

Dostosowane dane wyjściowe naszego skryptu Bash z flagą „-R” pokazano na poniższym obrazku:

Teraz uruchomimy skrypt bash z flagą „-y”, aby sprawdzić, czy daje on prawidłowe dane wyjściowe, czy nie w następujący sposób:

$ bash getopts.nieśmiały

Dostosowane dane wyjściowe naszego skryptu Bash z flagą „-y” pokazano na poniższym obrazku:

Teraz uruchomimy skrypt bash z flagą „-G”, aby sprawdzić, czy daje on prawidłowe dane wyjściowe, czy nie w następujący sposób:

$ bash getopts.sh -g

Dostosowane dane wyjściowe naszego skryptu Bash z flagą „-G” pokazano na poniższym obrazku:

Na koniec uruchomimy nasz skrypt Bash z dowolną losową flagą, tj.mi. Flaga, która nie jest ważna, lub flaga, która nie jest wymieniona w naszym skrypcie Bash, mówi „-a” w następujący sposób:

$ bash getopts.sh -a

Tym razem wykonano domyślny przypadek naszego skryptu Bash, który wyświetlił komunikat o błędzie, ponieważ użyliśmy nieprawidłowej flagi.

Przypadek nr 2: Przekazywanie flag wraz z argumentami do skryptu Bash za wykonanie w Linux Mint 20:

W tym przykładzie będziemy tworzyć skrypt bash, który przyjmie flagę i argument jako dane wejściowe użytkownika wraz z poleceniem wykonania tego skryptu Bash. W zależności od wartości podanej flagi i argumentu, odpowiednie wyjście zostaną wyprodukowane. Szczegółowy opis kroków związanych z tym scenariuszem jest następujący:

Krok 1: Pisanie skryptu Bash:

Skrypt bash użyty w tym przypadku jest pokazany na poniższym obrazku i jest bardzo podobny do tego, który stworzyliśmy dla naszego przypadku nr 1. Jedyną różnicą jest to, że tym razem nie zezwalamy na wiele flag. Użytkownik może tylko wprowadzić flagę „-R”. Jednak „:” okrężnica po flagi „R” w skrypcie Bash wskazuje, że użytkownik ma również podać argument wraz z flagą. Ten argument zostanie przechowywany w domyślnej zmiennej „Optarg”. Aby wyświetlić wartość podanego argumentu z poleceniem „echo”, użyliśmy symbolu „$” przed zmienną „optarg”.

Krok 2: Testowanie skryptu Bash:

Po zapisaniu tego skryptu Bash jest czas, aby go przetestować. Ponownie będziemy testować wszystkie przypadki jeden po drugim. Najpierw uruchomimy skrypt bash z flagą „-R” i przykładowym argumentem „czarnym”, aby sprawdzić, czy daje prawidłowe dane wyjściowe, czy nie w następujący sposób:

$ bash getopts.sh -r czarny

Dostosowane dane wyjściowe naszego skryptu Bash z flagą „-R” i argumentem „czarny” pokazano na poniższym obrazku:

Teraz przetestujemy ten skrypt z nieprawidłową flagą i prawidłowym argumentem w następujący sposób:

$ bash getopts.sh -czarny

Tym razem wykonano domyślny przypadek naszego skryptu Bash, który wyświetlił komunikat o błędzie, ponieważ użyliśmy nieprawidłowej flagi.

Teraz uruchomimy ten skrypt bash, pomijając flagę i po prostu przekazując prawidłowy argument w następujący sposób:

$ bash getopts.SH Black

Tym razem nie zostanie wytworzona wyjście na terminalu lub innymi słowy, nasz skrypt Bash nie zostanie wykonany, ponieważ pominęliśmy obowiązkową flagę.

Wreszcie, uruchomimy ten skrypt bash, pomijając argument i po prostu przekazując prawidłową flagę w następujący sposób:

$ bash getopts.sh -r

Ponownie tym razem wykonano domyślny przypadek naszego skryptu Bash, który wyświetlił komunikat o błędzie, ponieważ pominęliśmy obowiązkowy argument.

Wniosek:

Te dwa przykłady są bardzo miłym przedstawieniem użycia polecenia „getopts” w skrypcie Bash w Linux Mint 20. Możesz nawet stworzyć bardziej złożone scenariusze w Bash i sparować je z poleceniem „getopts”, aby wziąć więcej niż jeden argument i flagi od użytkownika jako dane wejściowe.