Jak przekazać nazwany argument w skrypcie powłoki?

Jak przekazać nazwany argument w skrypcie powłoki?
Skrypty powłoki w Linux pozwalają pisać programy o hardkodowanych wartościach i programach, które mogą przyjmować wejścia użytkowników w czasie wykonywania. Te wejścia użytkowników są znane jako parametry lub argumenty. Wszyscy zazwyczaj znamy przekazywanie normalnych argumentów do skorupy. Jednak czasami możesz poczuć potrzebę przekazywania „nazwanych argumentów” do swoich skontleur. W tym artykule poprowadzi Cię więcej o tym, co dokładnie nazywa się argumentami i ich potrzebami w skontlerze. Następnie podzielimy się obszernym przykładem przekazania nazwanych argumentów skryptowi powłoki w Ubuntu 20.04.

Nazwane argumenty w scenariuszach Shell w Ubuntu 20.04

Do tej pory wyraźnie rozumiemy, że możemy łatwo napisać takie skontlerze w Ubuntu 20.04, które są w stanie przyjmować argumenty jako dane wejściowe od użytkownika podczas wykonywania tych skryptów z terminalu. Jednak różny rodzaj argumentów zwanych „nazwanymi argumentami” jest również powszechnie używany w skontlerze. Nazwany argument to ten, który jest symbolizowany przez parę „wartości nazwy”. Ta para „wartości nazwy” jest zdefiniowana w skrypcie powłoki, a odpowiedni argument jest przekazywany w ten sam sposób podczas wykonywania skryptu, gdy przekazujesz normalne argumenty.

Zatem jakie jest znaczenie używania wymienionych argumentów w skontlerze? Cóż, czasami definiujesz argumenty w swoich skontleniach, ale podczas uruchamiania tych skryptów niekoniecznie musisz podać wszystkie te argumenty. Nazwane argumenty pozwalają pominąć wartości tylu z tych argumentów, ile chcesz, uruchamiając skrypt. W takim przypadku, gdybyś użył normalnych argumentów, twój system wydałby komunikat o błędzie i nie pozwoliłby ci kontynuować wykonania skryptu, gdybyś pominął jakiekolwiek wstępnie zdefiniowane argumenty w skrypcie.

Co więcej, czasami możesz również zmienić kolejność przekazywania argumentów podczas uruchamiania skryptu powłoki, i.mi., przekazujesz argumenty w losowej kolejności zamiast tego, który jest przestrzegany podczas deklarowania zmiennych w skrypcie powłoki. Nazwane argumenty z łatwością pozwalają ci to zrobić, podczas gdy z drugiej strony, jeśli użyłbyś normalnych argumentów w tej sytuacji, to znowu, komunikat o błędzie zostałby wygenerowany z powodu braku przestrzegania prawidłowej kolejności argumentów. Dlatego możesz powiedzieć, że nazwane argumenty zapewniają użytkownikom większą elastyczność, jednocześnie zapewniając dane wejściowe zamiast je ograniczać.

Teraz, gdy zdajesz sobie sprawę, jak ważne jest użycie nazwanych argumentów w scenariuszach powłoki, zobaczmy, w jaki sposób możemy użyć tych argumentów w skrypcie powłoki na Ubuntu 20.04 System.

Przykład przekazania nazwanych argumentów do skryptu powłoki w Ubuntu 20.04

Do przekazania nazwanych argumentów do skryptu powłoki w Ubuntu 20.04, zaprojektowaliśmy skrypt powłoki, który jest pokazany na poniższym obrazku. Będziemy wykonywać ten skrypt powłoki z różnymi argumentami lub wartościami wejściowymi w tej sekcji.

W tym skrypcie powłoki użyliśmy wbudowanej funkcji „getopts” w powładzie wewnątrz A jakś w pętli. Ta funkcja zasadniczo przyjmuje nazwane parametry jako dane wejściowe od użytkownika. Następnie zdefiniowaliśmy trzy różne przypadki, i.mi., „N, A i G” odpowiadające odpowiednio naszym zmiennym „Nazwa, wiek i płeć”. Przypadki te są zdefiniowane na zmiennej „flaga”, na której będzie wykonywać nasza instrukcja Case-ESAC. Instrukcja Case-ESAC w powłoce jest zasadniczo odpowiednikiem instrukcji przełącznika w C. Następnie, wewnątrz bloku Case-ESAC, wymieniliśmy wszystkie trzy sprawy, które zostały wcześniej zadeklarowane, i.mi., n, a i g. W przypadku każdego przypadku zadeklarowaliśmy zmienną, która jest równa argumentowi dostarczonym przez użytkownika jako wejście podczas wykonywania skryptu. Każdy argument dostarczony przez użytkownika będzie przypisany do odpowiedniej zmiennej za każdym razem, gdy ten skrypt zostanie wykonywany. Następnie w końcu mamy trzy polecenia „echo”, które są do wydrukowania odpowiednio wartości zmiennych, wieku i płci.

Po zaprojektowaniu tego skryptu najpierw wykonamy go z normalnie nazwanymi argumentami we właściwej kolejności w następujący sposób:

$ Bash o nazwie.sh -n aqsa -a 27 -g kobieta

Tutaj, nazwany.SH reprezentuje nazwę naszego skryptu powłoki. Ponadto z tego polecenia można zobaczyć, że najpierw wymieniliśmy flagi, a następnie ich odpowiednie argumenty, które mają zostać przekazane. Możesz również wyraźnie zauważyć, że przekazaliśmy te argumenty w dokładnej kolejności, ponieważ zostały one zdefiniowane w naszym skrypcie powłoki.

Teraz, gdy ten skrypt powłoki zostanie wykonany, będziesz mógł zobaczyć wartości przypisane do wszystkich nazwanych parametrów na terminalu, jak pokazano na poniższym obrazku:

Po wykonaniu tego skryptu w normalnym przepływie możemy wypróbować mały eksperyment, wykonując ten skrypt powłoki z tymi samymi wartościami wejściowymi, ale w nieco innej kolejności, jak pokazano w następującym poleceniu:

$ Bash o nazwie.sh -n aqsa -g kobieta -a 27

Możesz zobaczyć w tym dowództwie, że zmieniliśmy kolejność argumentów płci i wieku z tego, który został początkowo zdefiniowany w skrypcie powłoki. Teraz spróbujemy dowiedzieć się, czy te wartości są poprawnie przypisane do naszych nazwanych argumentów, czy nie.

Gdy to polecenie zostanie wykonane, z jego wyjścia będziesz mógł zobaczyć, że niezależnie od kolejności przekazywania argumentów podczas wykonywania skryptu powłoki nadal będą przypisane do odpowiednich zmiennych, jak pokazano na poniższym obrazku:

W niektórych sytuacjach użytkownik może nie chcieć ujawnić swojego wieku. W tej sytuacji on/ona wykona ten skrypt powłoki w następujący sposób:

$ Bash o nazwie.sh -n aqsa -g kobieta

W wyniku tego skryptu powłoki, gdy jest on wykonywany z argumentami pokazanymi powyżej, możesz wyraźnie zobaczyć, że nasz system nie wygenerował żadnych komunikatów o błędach; raczej płynnie wykonał nasz skrypt z dostarczonymi parametrami, pozostawiając zmienną wiekową pustą.

W ten sam sposób możesz również spróbować pominąć zmienną płci, jednocześnie zapewniając tylko wartość zmiennej nazwy w sposób pokazany poniżej:

$ Bash o nazwie.sh -n aqsa

Odpowiednie wyjście dla tego polecenia pokazano na poniższym obrazku:

Na koniec spróbujemy wykonać ten skrypt, nie podając żadnych argumentów w następujący sposób:

$ Bash o nazwie.cii

Ponownie możesz zobaczyć z następującego wyjścia, że ​​żaden komunikat o błędzie nie jest generowany; raczej nasz skrypt z powodzeniem wykonał nawet bez podanych argumentów.

Wniosek

Na podstawie szczegółowego przykładu omówionego w tym samouczku możemy stwierdzić, że nadal będzie on pomyślnie wykonany, niezależnie od kolejności nazwanych argumentów podanych skryptowi powłoki. Ponadto, nawet jeśli nie podasz żadnych argumentów do swojego skryptu, nadal można go wykonać bez żadnych błędów. Jednak jedyną rzeczą, na którą musisz zachować ostrożność podczas przekazywania nazwanych argumentów, jest użycie prawidłowej flagi, a następnie jej odpowiedniej wartości podczas wykonywania skryptu powłoki.