Bash getopts

Bash getopts
Czasami musimy odczytać argumenty i opcje wiersza poleceń w skryptach Bash. Argumenty wiersza poleceń można łatwo odczytać za pomocą zmiennych argumentów. Ale do odczytania zarówno argumentów i opcji wiersza poleceń, Bash użył wbudowanego polecenia „Getopts”. To polecenie może być używane do analizowania krótkich opcji, takich jak „-a” lub „-1” i długie opcje, takie jak „-package-name”. W jaki sposób można użyć polecenia „getopts” do analizowania argumentów i opcji wiersza poleceń.

Składnia:

Getopts optstring Nazwa [Args]

Opcje:

Niektóre głównie używane opcje getopts są wymienione tutaj.

Etykietka Opis
-o lub -options Zidentyfikuj opcję jednoosobową.
-L lub -longoptions Zidentyfikuj opcje wielu znaków.
-n lub -name Zgłoś błędy pochodzące z polecenia GetOpts
-Q lub -Quiet Wyłącz raportowanie błędów
-T lub -test Wersja testowa getopts
-A lub -alternatywny Zezwalaj na długą opcję z pojedynczym '-'

Przykład-1: Używanie jednego opcja

Ten przykład pokazuje bardzo proste użycie polecenia GetOpts. Utwórz plik bash o nazwie „getopts1.sh 'z następującym kodem do przetestowania kodu. Tutaj, podczas gdy pętla będzie kontynuowana dla opcji polecenia getopts. Instrukcja sprawy sprawdzi opcję. Jeśli opcją jest „C”, skrypt wydrukuje „Mój ulubiony kolor to niebieski”. Jeśli opcją jest „f”, skrypt wydrukuje „moje ulubione jedzenie to lody”. Jeśli opcją jest „-m”, skrypt wydrukuje „Mój ulubiony film to Titanic”. W przypadku dowolnej innej wartości opcji „musisz użyć: [-c] lub [-f] lub [-m]”.

#!/bin/bash
# Przeczytaj opcję i przechowuj w opcji zmiennej, $
podczas gdy getopts „cfm”; Do
case $ opcja w
c) #dla opcji C
Echo „Mój ulubiony kolor to niebieski”
;;
f) #dla opcji F
echo „moim ulubionym jedzeniem jest lody”
;;
m) #dla opcji m
Echo „moim ulubionym filmem jest Titanic”
;;
\? ) #Dla nieprawidłowej opcji
echo „musisz użyć: [-c] lub [-f] lub [-m]”
;;
esac
zrobione

Uruchom skrypt za pomocą czterech opcji, „-c”, '-f', '-m' i '-k'.

$ bash getopts1.sh -c
$ bash getopts1.sh -f
$ bash getopts1.sh -m
$ bash getopts1.sh -k

Wyjście:

Przykład-2: Korzystanie z opcji z jednym argumentem

Ten przykład pokazuje użycie polecenia getopts z argumentem. Utwórz plik bash o nazwie „getopts2.sh 'z następującym kodem do przetestowania kodu. Tutaj „:” jest używany z „p” do zdefiniowania, że ​​polecenie przyjmie argument z opcją. Skrypt wydrukuje wartość argumentu z innym ciągiem, jeśli argument z opcją „-p” zawiera w czasie wykonywania. Jeśli jakakolwiek opcja dostarczy zamiast „-p”, wyświetli komunikat o błędzie o wartości opcji. Jeśli opcja „-p” dostarczy bez żadnego argumentu, wydrukuje inny komunikat o błędzie.

#!/bin/bash
podczas getopts „p:” opt; Do
case $ opt w
p)#printu wartość argumentu
echo „Lubię $ optarg programowanie”
;;
\? )
#PRINT BŁĄD OPCJĄ
echo „Nieprawidłowa opcja: $ optarg” 1> i 2
;;
:)
Błąd argumentu #print
echo „Nieprawidłowa opcja: $ optarg wymaga argumentu” 1> i 2
;;
esac
zrobione

Uruchom skrypt z opcją -p i wartością argumentu „Bash”, z opcją -p i z opcją -t.

$ bash getopts2.bash sh -p
$ bash getopts2.sh -p
$ bash getopts2.sh -t

Wyjście:

Przykład-3: Korzystanie z opcji z wieloma argumentami

Ten przykład pokazuje zastosowania polecenia getopts z wieloma argumentami. Utwórz skrypt bash o nazwie grtopts3.SH z następującym kodem do przetestowania skryptu. Zgodnie ze skryptem wartości argumentów oddzielone przecinki zostaną dostarczone z wiersza poleceń.

Tutaj opcja „-f” i zmienna IFS są używane do podziału argumentów i przechowywanych w tablicy, $ Numarr. Jeśli dostarczą argumenty oddzielone przecinkami, wydrukują całkowitą liczbę argumentów. Dwie opcje będą obsługiwać polecenie. Suma wartości argumentów zostanie obliczona i wydrukowana, jeśli opcja „-a” dostarczy argumentów. Mnożenie wartości argumentów zostanie obliczone i wydrukowane, jeśli opcja „-m” dostarczy argumentów.

#!/bin/bash
podczas gdy getopts „a: m:” opt; Do
set -f; Ifs = ','
Numarr = (2 USD)
echo "Całkowita liczba argumentów = $ #numarr [@]"
sprawa $ opt in
a) wynik = 0
dla i in „$ numarr [@]”; Do
((wynik = $ wynik+$ i))
zrobione
echo „suma wszystkich argumentów = $ wynik” ;;
m) wynik = 1
dla i in „$ numarr [@]”; Do
((wynik = $ wynik*$ i))
zrobione
echo „Mnożenie wszystkich argumentów = $ wynik” ;;
*) Echo „Niepoprawna opcja lub argument”
Wyjście 1
esac
zrobione

Uruchom skrypty z opcją „-A” i trzema argumentami, z opcją „-m” i trzema argumentami i opcją „-t” bez żadnych argumentów.

$ bash getopts3.SH -A 3,2,5
$ bash getopts3.SH -M 3,2,5
$ bash getopts3.sh -t

Wyjście:

Przykład-4: Korzystanie z wielu opcji i argumentów

Ten przykład pokazuje użycie polecenia getopts z wieloma opcjami i wieloma argumentami. Utwórz plik bash o nazwie „getopts4.SH z następującym kodem do przetestowania przykładu. Tutaj dwie opcje będą działać z dwoma argumentami osobno. Jeśli żadna z opcji nie zostanie dostarcza, wydrukuje komunikat o błędzie.

#!/bin/bash
podczas gdy getopts „n: m:” opt; Do
sprawa $ opt in
N)
#Przeczytanie pierwszego argumentu
echo „Nazwa ucznia to $ optarg”> i 2
;;
M)
#Przeczytanie drugiego argumentu
echo ", a znaki to $ optarg"> i 2
;;
*)
#Printing Komunikat o błędzie
echo „Nieprawidłowa opcja lub argument $ optarg”
;;
esac
zrobione

Kiedy skrypt będzie uruchomiony przez opcję „-n” z opcją „ella” i „-m” z 85, wówczas dwa instrukcje przypadków będą prawdziwe i wydrukują dwa wyjścia. Gdy skrypt będzie działał tylko przez opcję „-n” z „ella”, to tylko jedno instrukcja przypadku będzie prawdziwa i wydrukuje jedno wyjście. Gdy skrypt zostanie uruchomiony przez opcję „-p”, wydrukuje komunikat o błędzie.

$ bash getopts4.sh -n ella -m 85
$ bash getopts4.sh -n ella
$ bash getopts4.sh -p ella

Wniosek

Podstawowe zastosowania polecenia „getopts” są pokazane w tym samouczku za pomocą powyższych przykładów. Mam nadzieję, że po ćwiczeniu tego samouczka będziesz mógł użyć opcji i argumentów wiersza poleceń w skrypcie Bash.