W Linuksie używamy argumentów wiersza poleceń jako danych wejściowych dla skryptu bash. Bash może pobierać te argumenty wiersza poleceń sekwencyjnie i analizować je jako opcję. Argumenty te umożliwiają dynamiczne wpływanie na działania i wyniki skryptu.
Możesz skonfigurować te argumenty inaczej, aby wpływać na dane wejściowe i wyjściowe. Dlatego obsługa argumentów wiersza poleceń w bashu jest niezbędna, ale wielu nowych użytkowników musi się tego nauczyć. Dlatego w tym przewodniku wyjaśnimy różne sposoby obsługi argumentów wiersza poleceń w bashu.
Jak obsługiwać argumenty wiersza poleceń w Bash?
Istnieją różne sposoby obsługi argumentów wiersza poleceń w Bash, więc przyjrzyjmy się im, aby uzyskać krótkie informacje:
Funkcja getopt
Funkcja getopt jest przydatna, ponieważ zapewnia opcje i składnię do definiowania i analizowania argumentów w bashu. Jest to wbudowana funkcja Linuksa, której możesz użyć podczas tworzenia pliku bazy danych lub raportu w określonym formacie na podstawie argumentów. Funkcja getopt pomaga analizować krótkie argumenty wiersza poleceń, ponieważ istnieją dwa rodzaje argumentów:
- Krótkie argumenty: Są to argumenty jednoznakowe, po których następuje łącznik. Na przykład -a, -l, -h itd. to kilka przykładów pojedynczych argumentów.
- Długie argumenty: Są to wieloznakowe argumenty, po których następuje podwójny łącznik. Istnieje wiele przykładów długich argumentów, takich jak –all, –list, –help itp.
Weźmy przykład, w którym będziemy obsługiwać argumenty wiersza poleceń za pomocą narzędzia getopt. Stworzyliśmy skrypt basha o nazwie „getopt.sh”, który zawiera następujące informacje:
!/ kosz / grzmotnąć
podczas gdy getopty 'A:B:C:D:' Detale; robić
walizka ' $szczegóły ' w
A )
Echo „Imię obywatela to $OPTARG ' ;;
B )
Echo „Dowód osobisty jest $OPTARG ' ;;
C )
Echo „Miejsce urodzenia jest $OPTARG ' ;;
D )
Echo „Zawód jest $OPTARG ' ;;
* )
Wyjście 1 ;;
esac
Gotowe
Zmiana ' $(($OPCJA -1) )'
jeśli [ ! -z 1 $ ] ; następnie
Echo „Stan cywilny 1 $”
w przeciwnym razie
Echo „Brak wpisów”
Wyjście 1
być
jeśli [ ! -z 2 dolary ] ; następnie
Echo „Członkowie rodziny 2 dolary”
być
Teraz wykonajmy skrypt z wymaganymi argumentami na wejściu:
Jak widać na powyższym obrazku, uruchamiamy skrypt tylko z funkcjami getopt, a następnie dodajemy normalne argumenty, aby uzyskać pełny wynik.
Używanie flag
Flagi to nic innego jak pojedyncze znaki poprzedzone myślnikami (-). Kiedy przekazujemy argumenty za pomocą funkcji getopt, używamy flag. -a, -b, -c to kilka przykładów flag. Na przykład scenariusz wymaga imienia i nazwiska obywatela, jego identyfikatora, miejsca, wieku i zawodu. Dlatego użyliśmy flag j, k, l, m, n, aby jednocześnie określić nazwisko obywatela, identyfikator, miejsce zamieszkania, wiek i zawód:
#!/bin/bashPodczas gdy getopty j:k:l:m:n: flaga_informacje
robić
walizka ' ${flag_info} ' w
< ol >
< że > j ) nazwisko obywatela = ${OPTARG} ;; że >
< że > k ) identyfikator obywatela = ${OPTARG} ;; że >
< że > l ) miejsce = ${OPTARG} ;; że >
< że > m ) wiek = ${OPTARG} ;; że >
< że > n ) zawód = ${OPTARG} ;; że >
ol >
esac
Gotowe
Echo „Oto wprowadzone dane:”
Echo „Nazwisko obywatela: $nazwa obywatela ' ;
Echo „Identyfikator obywatela: $obywatel ' ;
Echo 'Miejsce: $miejsce ' ;
Echo 'Wiek: $wiek ' ;
Echo 'Zawód: $zawód ' ;
Skrypt zwróci następujący wynik w terminalu:
. /< scenariusz > .cii -j Danny'ego - k 476 -l Toronto -m 25 -n Autor
Za pomocą [chroniony e-mail] Z Pętlami
„ [chroniony e-mail] ” to nic innego jak tablica wszystkich argumentów wejściowych. Możemy przekazać dowolną liczbę wejść za pomocą „ [chroniony e-mail] ' zmienny. Możesz użyć tej zmiennej jako pętli do iteracji argumentów. „ [chroniony e-mail] ” zmienna przydaje się wtedy; nie znasz rozmiaru wejściowego i nie możesz przyjąć argumentów pozycyjnych. Dlatego możesz użyć opcji „ [chroniony e-mail] ” zamiast ciągłego definiowania funkcji getopt. Oto przykład użycia pętli i [chroniony e-mail] razem w skrypcie:
#!/bin/bashna jednego = ( “$ @ ” )
jeśli [ $# -gt 1 ]
następnie
Dodaj = $ ( ( ${liczba[0]} + ${num[1]} ) )
Echo „Dodawanie wszystkich liczb to: $dodaj '
odejmowanie = $ ( ( ${liczba[0]} - ${num[1]} - ${liczba[2]} ) )
Echo „Odejmowanie liczb to: $odejmowanie '
zwielokrotniać = $ ( ( ${liczba[0]} * ${num[1]} * ${liczba[2]} ) )
Echo „Mnożenie liczb to: $ pomnóż '
dywizja1 = $ ( ( ${liczba[0]} / ${num[1]} ) )
Echo „Podział ds ${liczba[0]} oraz ${num[1]} jest: $dział1 '
dywizja2 = $ ( ( ${num[1]} / ${liczba[2]} ) )
Echo „Podział ${num[1]} oraz ${liczba[2]} jest: $podział2 '
podział3 = $ ( ( ${liczba[0]} / ${liczba[2]} ) )
Echo „Podział ${liczba[0]} oraz ${liczba[2]} jest: $podział2 '
być
Powyższy skrypt wykonuje różne obliczenia arytmetyczne na podstawie argumentów wiersza poleceń. Na przykład wprowadziliśmy 50, 35 i 15 jako dane wejściowe:
Korzystanie z parametrów pozycyjnych
Możesz uzyskać dostęp do parametrów pozycyjnych, ponieważ najpierw uzyskują dostęp do 1 $, następnie 2 $ i tak dalej. Na przykład stwórzmy skrypt, który odczytuje nazwę jako pierwszy argument, a następnie miasto jako drugi. Jeśli jednak najpierw przejdziesz do miasta, a następnie do nazwy, wówczas nazwa zostanie uznana za miasto i odwrotnie. Przyjrzyjmy się bliżej poniższemu skryptowi, aby zrozumieć tę koncepcję:
#!/bin/bashEcho „Oto wprowadzone dane”
Echo „nazwisko $1”
Echo „miasto 2 dolary”
Musisz dodać nazwę i miasto w momencie wykonywania skryptu w terminalu:
Podsumowanie
To wszystko, co musisz wiedzieć o metodach obsługi argumentów wiersza poleceń w bashu. Wyjaśniliśmy różne podejścia, które możesz wypróbować, wraz z odpowiednimi przykładami. Istnieją różne polecenia, jeśli chcesz dodać argumenty w skrypcie. Więc upewnij się, że odwiedzasz Linuxhint, aby dowiedzieć się więcej o nich.