Jak przekazać argument w skrypcie Bash?

How Do I Pass Argument Bash Script



Większość użytkowników Linux Mint 20 utknęła podczas przekazywania argumentu w skrypcie bash. Argumenty można przekazać do dowolnego skryptu bash, gdy jest on wykonywany. Istnieje kilka prostych i użytecznych sposobów przekazywania argumentów w skrypcie bash. W tym przewodniku po artykułach przedstawimy Ci kilka bardzo prostych sposobów przekazywania i używania argumentów w skryptach bash.

Przekazywanie argumentów przy użyciu zmiennych domyślnych:

Utwórz nowy plik o dowolnej nazwie za pomocą polecenia dotykowego, np. plik.sh.







$dotykaćNazwa pliku



Otwórz ten nowo utworzony plik i dodaj do niego skrypt bash. Dodałem kilka domyślnych zmiennych, m.in. W konsekwencji $1, $2 i $3. Wszelkie argumenty, które będą przekazywane przez terminal, będą przechowywane w podanych zmiennych.







Musisz uruchomić ten plik za pomocą polecenia ./ , po którym następuje kilka argumentów. Jak widać na obrazku, gdy przekazałem argumenty, pojawia się błąd: Permission denied. Dzieje się tak, ponieważ ten plik nie ma uprawnień do wykonywania.

$./nazwa pliku argument1 argument2 argument

Tak więc, aby nadać prawa wykonywania do tego pliku, użyj w tym celu polecenia sudo chmod.



$sudo chmod+x nazwa pliku

Teraz ponownie uruchom plik, używając tego samego powyższego polecenia. Tym razem przedstawiłem różne argumenty. Zobaczysz, że nowo przekazane argumenty są przechowywane w zmiennych domyślnych.

Przekazywanie nazwy skryptu powłoki jako argumentu:

Teraz używamy tego samego starego pliku file.sh z niewielką zmianą w jego domyślnych zmiennych. Musisz dodać zmienną $0 w skrypcie, jak pokazano.

Po uruchomieniu tego samego polecenia skryptu ./ powłoki, nazwa skryptu powłoki, np. ./nazwapliku będzie przechowywany w zmiennej $0 jako argument.

Przekazywanie argumentów jako tablicy do zmiennej:

Zaczynając od tego samego pliku file.sh, musisz dodać kilka dodatkowych linii w starym skrypcie. Zadeklaruj zmienną o nazwie tablica. Dodaj domyślną zmienną [email protected], która będzie przechowywać argumenty wprowadzone przez użytkownika jako tablicę. Te argumenty zostaną przetworzone na tablicę zmiennych. Ostatnia linia wyświetli wszystkie argumenty tablicy zmiennej posortowane według numeru indeksu.

Uruchom skrypt powłoki ./. Zobaczysz, że wyświetli argumenty lub wartości przechowywane jako tablica w [email protected] przetworzone na zmienną tablica, ale nie nazwę skryptu powłoki w drugiej instrukcji echo. Otrzymasz następujący wynik.

$./nazwa pliku argument1 argument2 argument

Użyj tego samego pliku z tym samym skryptem. Po prostu usuń ${array[3]} z ostatniego wiersza, tak jak jest to wyraźnie widoczne na obrazku.

Po wykonaniu polecenia ./ zobaczysz podobny wynik, jak w powyższym przykładzie, bez zmian.

Możesz również uzyskać ten sam wynik, zastępując ostatnią linię skryptu bash jednym słowem. Musisz tylko dodać [email protected] w instrukcji echo, a wyświetli argumenty obecne w tej tablicy zmiennych.

Ponowne uruchomienie polecenia ./ spowoduje uzyskanie tych samych wyników.

Sprawdź całkowitą liczbę przekazanych argumentów:

Wręcz przeciwnie, jeśli chcesz poznać całkowitą liczbę argumentów przekazanych przez użytkownika, możesz to zrobić. W tym celu wystarczy zamienić [email protected] na $# w echo.

Ponownie wykonując polecenie ./, zobaczysz teraz całą liczbę argumentów przekazanych do skryptu. W naszym przypadku jako wartość przekazywane są 3 argumenty.

Utwórz wiersz po wierszu wyjście argumentów:

Utwórz nowy plik test.sh w katalogu domowym. Dodaj skrypt bash, jak pokazano.

Teraz uruchom to samo stare polecenie z różnymi argumentami. Najpierw zobaczysz błąd: Odmowa uprawnień.

Musisz wykonać polecenie chmod, aby nadać temu plikowi uprawnienia sudo. Następnie uruchom ponownie polecenie skryptu powłoki ./. I otrzymasz wiersz po wierszu posortowane dane wyjściowe argumentów.

Ogranicz zmienną za pomocą numeru indeksu argumentu:

Jeśli chcesz ograniczyć zmienną za pomocą jej numeru indeksu, możesz to zrobić bardzo łatwo. Dodaj nawiasy klamrowe po znaku $ i dodaj numer indeksu argumentu, który chcesz wyświetlić przed innymi argumentami.

Jeśli argumenty podane przez użytkowników są mniejsze niż numer indeksu podany w zmiennej limit, otrzymasz pustą wartość argumentu. Jako przykład podałem 4 argumenty, ale podałem wartość 05 argumentów do wyświetlenia. W tej sytuacji zmienna będzie wyświetlana jako pusta, ponieważ nie przekazano piątego argumentu.

Ale gdy przekażesz równą lub większą liczbę argumentów w poleceniu, otrzymasz wartość wyświetlaną w wyniku, jak pokazano.

Sprawdzanie konkretnych argumentów wartości:

Utwórz nowy plik o nazwie Check.sh w swoim katalogu domowym. Dodaj ten sam skrypt bash, jak pokazano na poniższym obrazku. W tym skrypcie mamy zmienną var do przechowywania wartości argumentu przekazanej przez użytkownika. Następnie mamy instrukcję if, która sprawdzi, czy wartość argumentu jest dopasowana, czy nie. Jeśli wartość argumentu jest zgodna z wartością podaną w nawiasie, zostanie wykonana pierwsza instrukcja echo. Jeśli wartość nie pasuje, zostanie wykonana druga instrukcja echo.

Kiedy uruchomimy polecenie skryptu powłoki, zgłosi błąd. Używając polecenia chmod, możemy naprawić ten błąd.

Następnie wykonaj skrypt powłoki dla konkretnego pliku z pewną wartością argumentu. W naszym przypadku podaliśmy Aqsa jako wartość argumentu, która jest taka sama jak wartość wyświetlana w nawiasie. Tak więc skrypt bash wykona pierwszą instrukcję echo, jak pokazano.

Z drugiej strony, jeśli podasz różne wartości argumentów w skrypcie powłoki, wyświetli się druga instrukcja echo. Tutaj dodałem Rimsha jako wartość argumentu, która różni się od wartości podanej w instrukcji if. Tak więc skrypt bash wykona drugą instrukcję echo.

Wniosek:

Mam nadzieję, że ten przewodnik pomógł ci wystarczająco dobrze, aby dobrze zrozumieć, jak przekazywać argumenty do domyślnych zmiennych, przekazywać wartość argumentu jako tablicę do zmiennej, uzyskać całkowitą liczbę przekazywanych argumentów, wyprowadzać argumenty wiersz po wierszu, ograniczać argument wyprowadzanie przy użyciu numeru indeksu, sprawdzanie określonego argumentu wartości i wiele innych.