Jak obsługiwać argumenty wiersza poleceń w skrypcie Bash

How Handle Command Line Arguments Bash Script



W wielu przypadkach skrypty bash wymagają wartości argumentów w celu udostępnienia opcji wejściowych do skryptu. Możesz obsługiwać argumenty wiersza poleceń w skrypcie bash na dwa sposoby. Jednym z nich jest użycie zmienne argumentów a innym jest użycie getopts funkcjonować. W tym samouczku pokazano, jak obsługiwać argumenty wiersza poleceń.

Używając zmiennych argumentów:

Zmienna argumentu zaczyna się od $0. Nazwa głównego pliku skryptu jest przechowywana w $0, który otrzymuje wartości argumentów z argumentów wiersza poleceń. Jeśli w wierszu poleceń zostaną przekazane dwa argumenty, wartości argumentów zostaną odebrane kolejno w zmiennych $1 i $2.







Przykład -1: Wysyłanie trzech wartości liczbowych jako argumentów

Utwórz plik bash i dodaj następujący kod. Skrypt otrzyma trzy wartości argumentów i zapisze je w $1, $2 i $3. Zliczy całkowitą liczbę argumentów, wypisze wartości argumentów z pętlą i bez pętli. Na koniec wypisz sumę wszystkich wartości argumentów.



#!/kosz/bash

# Liczenie całkowitej liczby argumentów
wyrzucił 'Całkowita liczba argumentów: $#'

# Czytanie wartości argumentów indywidualnie
wyrzucił 'Wartość pierwszego argumentu: $1'
wyrzucił 'Wartość drugiego argumentu: $2'
wyrzucił 'Wartość trzeciego argumentu: 3 USD'

# Odczytywanie wartości argumentów za pomocą pętli
dlaargvalw ' [e-mail chroniony] '
robić
wyrzucił -n '$argval'
Gotowe

# Dodawanie wartości argumentów
suma= $((1 zł+2 zł+3 zł))

# wydrukuj wynik
wyrzucił -I ' Wynik sumy =$sum'

Uruchom plik bash z trzema wartościami liczbowymi argumentów.



$grzmotnąćcmdline1.shpięćdziesiąt 35 piętnaście





Przykład -2: Przyjmowanie nazwy pliku jako argumentu

Utwórz plik bash i dodaj następujący kod, aby policzyć całkowitą liczbę znaków dowolnego pliku. Tutaj nazwa pliku zostanie przekazana jako argument wiersza poleceń.

#!/kosz/bash
Nazwa pliku=1 zł
totalchar=``toaleta -C $nazwa pliku``
wyrzucił 'Całkowita liczba znaków to$ totalcha'

Uruchom skrypt bash z nazwą pliku jako wartością pojedynczego argumentu i uruchom inne polecenie, aby sprawdzić całkowitą liczbę znaków tego pliku. Tutaj plik worker.txt jest używany jako wartość argumentu. Całkowita liczba znaków w pliku worker.txt to 204.



$grzmotnąćcmdline2.sh pracownik.txt
$toaleta -Cpracownik.txt

Korzystanie z funkcji getopts:

Jeśli chcesz przechowywać dane w bazie danych lub dowolnym pliku lub utworzyć raport w określonym formacie na podstawie wartości argumentów wiersza poleceń, to getopts funkcja jest najlepszą opcją do wykonania zadania. Jest to wbudowana funkcja Linuksa. Możesz więc łatwo użyć tej funkcji w swoim skrypcie, aby odczytać sformatowane dane z wiersza poleceń.

Przykład -1: Odczytywanie argumentów przez funkcję getopts

Utwórz plik bash i dodaj następujący skrypt, aby zrozumieć użycie getopts funkcjonować. Funkcja „getopts” jest używana z pętlą while do odczytywania opcji argumentów wiersza poleceń i wartości argumentów. Tutaj używane są 4 opcje, które są „ja”, „n”, „m” oraz 'I' . Instrukcja case służy do dopasowania konkretnej opcji i przechowywania wartości argumentu w zmiennej. Na koniec wydrukuj wartości zmiennej.

#!/kosz/bash
podczas getopts ':we mnie:'zły;robić
Obudowa $ arg w
i) NS=$OPTARG;;
n) Nazwa=$OPTARG;;
m) Data produkcji=$OPTARG;;
I) Data ważności=$OPTARG;;
esac
Gotowe
wyrzucił -I ' $ID $Nazwa $Manufacturing_date $Data wygaśnięcia '

Uruchom plik z następującymi opcjami i wartościami argumentów. Tutaj p100 jest wartością opcji -i, 'Hot Cake' jest wartością opcji -n, '01-01-2018′ jest wartością opcji -m, a '06-01-2018′ jest wartością - e opcja.

$grzmotnąćcmdline3.sh-ip001-n 'Gorące ciasto' -m '01-01-2018' -I '06-01-2018'

Kiedy musisz przesłać proste wartości w skrypcie, lepiej jest użyć zmiennych argumentów. Ale jeśli chcesz przesłać dane w sposób sformatowany, lepiej użyć funkcji getopts do pobrania wartości argumentów. Aby uzyskać więcej informacji, obejrzyj wideo !