Użycie polecenia „Shift” w Bash

Użycie polecenia „Shift” w Bash
Gdy argumenty wiersza poleceń pobierają dane wejściowe od użytkownika, pierwszy argument zawiera nazwę skryptu. Czasami nazwa skryptu jest wymagana do pominięcia do celów programowania. To zadanie można łatwo wykonać za pomocą dowolnej pętli w Bash. Używając 'zmiana„polecenie to kolejny sposób na wykonanie zadania. To polecenie służy domyślnie do przenoszenia jednego parametru pozycyjnego po lewej stronie. Różne zastosowania ''zmiana„Dowództwo w Bash pokazało w tym samouczku.

Składnia:

Składnia polecenia „Shift” podano poniżej. To polecenie ma jeden opcjonalny argument, który służy do ustawienia liczby pozycji, które zostaną przesunięte w lewo. Argument musi być pozytywny. Jeśli wartość argumentu jest ustawiona na 0, żaden argument wiersza polecenia nie zostanie przesunięty. Jeśli nie jest używany argument, wówczas jeden argument wiersza poleceń zostanie domyślnie przesunięty.

zmiana [n]

Przykład-1: Wydrukuj wszystkie wartości argumentów wiersza poleceń

Utwórz plik bash z następującym skryptem, aby wydrukować wartości argumentu wiersza poleceń za pomocą „dla„ pętli bez „shift” i ”, podczas gdy„ pętla z „shift” polecenie. Każda wartość argumentu będzie przechowywana w zmiennej, wartość kiedy Do pętla zostanie wykonana, a ta zmienna zostanie wydrukowana później. początek Zmienna używana w chwila pętla, aby odczytać każdą wartość argumentu za pomocą 'zmiana„polecenie i zakończ pętlę, gdy wszystkie argumenty wiersza poleceń są wydrukowane. Zmienna kontratakowa, I, został użyty w skrypcie do wyświetlania liczby argumentu. Jeśli w czasie wykonania nie zostanie podany żaden argument wiersza poleceń, wówczas zostanie ustawiony pusty ciąg i nic nie zostanie wydrukowane.

#!/bin/bash
#Printuj wartości AEGUMUNE linii poleceń za pomocą i podczas pętli
#Ustaw licznik
i = 1
echo „wartości argumentu bez polecenia zmiany:”
#Triterate wszystkie wartości za pomocą pętli
Dla wartości w „$@”
Do
Echo „Argument no. $ i = $ wartość "
((i ++))
zrobione
#Ponownie inicjuj licznik
i = 1
#Otestuj opcjonalny argument
start = $ 1:-""
echo „Wartości argumentu za pomocą polecenia Shift:”
#Triterate wszystkie wartości za pomocą pętli
podczas gdy [„$ start” != ""];
Do
Echo „Argument no. $ i = $ start "
#Shift każdy argument o 1
zmiana
start = 1 $
((i ++))
zrobione

Wyjście:

Zgodnie z następującym wyjściem powyższy skrypt został wykonany z trzema wartościami argumentów wiersza poleceń. Wartości argumentów są drukowane dwa razy za pomocą pętli dla dlazmiana' Komenda.

Przykład-2: Wydrukuj wartości argumentów równej pozycji

W poprzednim przykładzie żaden argument nie używał z 'zmiana„polecenie i wartość argumentu została przesunięta o 1 w lewo. Użycie opcjonalnego argumentu 'zmiana„Polecenie jest pokazane w tym przykładzie. Utwórz plik bash z następującym skryptem, aby wydrukować wartości argumentu wiersza poleceń równej pozycji. Całkowita liczba argumentów wiersza poleceń liczyła się i zapisała w zmiennej całkowity, i został użyty w chwila pętla, aby iterować pętlę. ''zmiana„Polecenie zostało użyte z wartością argumentu 2 do przesunięcia dwóch argumentów wiersza poleceń w każdej iteracji pętli. Każdy argument wiersza poleceń równych pozycji zostanie wydrukowany z przestrzenią po wykonaniu skryptu.

#!/bin/bash
#Zwiększ całkowitą liczbę argumentów wiersza poleceń
Total = $#
Echo „Całkowite argumenty to: $ Total”
echo „Wartości argumentów równej pozycji to:”
podczas gdy [$ ogółem -ge0];
Do
#Printu wartość argumentu z przestrzenią
echo -n 1 $ ""
#Shift dwa argumenty
SHIFT 2
#Decrement licznik przez 2
((ogółem = $ ogół-2))
zrobione
#Add Nowa linia
Echo

Wyjście:

Zgodnie z następującym wyjściem powyższy skrypt wykonał sześć wartości argumentów wiersza poleceń bez nazwy skryptu. Po wydrukowaniu wartości 89 kolejna wartość równej pozycji wynosi 34, a kolejna wartość równej pozycji to 12.

Przykład-3: Przeczytaj konkretne wartości określonych argumentów

Sposób odczytania określonych wartości argumentu wiersza poleceń za pomocą 'zmiana„Polecenie bez użycia żadnej pętli pokazało w tym przykładzie. Utwórz plik bash z następującym skryptem. Całkowita liczba argumentów wiersza poleceń została zliczona w skrypcie, a jeśli całkowita wartość jest mniejsza niż 6, skrypt zostanie zakończony, wyświetlając komunikat o błędzie. Jeśli sześć argumentów wiersza poleceń zostanie odpowiednio podanych, drugi argument będzie zawierał nazwę hosta, czwarty argument będzie zawierał nazwę użytkownika, a szósty argument będzie zawierał hasło. Nazwa hosta będzie przechowywana w zmiennej, zmieniając jeden argument z lewej strony. Nazwa użytkownika będzie przechowywana w zmiennej, zmieniając dwa argumenty pozostawione. Hasło będzie przechowywane w zmiennej, zmieniając ponownie dwa argumenty. Następnie nazwa hosta, nazwa użytkownika i hasła zostaną porównane z trzema wartościami ciągów, aby uwierzytelnić użytkownika.

#!/bin/bash
#Zwiększ całkowitą liczbę argumentów wiersza poleceń
Total = $#
#Sprawdź 6 wartości argumentów są podane lub nie
jeśli [$ total -lt6]; Następnie
echo „Nieprawidłowa liczba argumentów."
w przeciwnym razie
#Slift One Argument
zmiana 1
#Przeczytaj wartość nazwy hosta
nazwa hosta = 1 $
#Shift dwa argumenty
SHIFT 2
#Przeczytaj wartość nazwy użytkownika
Nazwa użytkownika = 1 $
#Shift dwa argumenty
SHIFT 2
#Przeczytaj wartość hasła
hasło = 1 USD
fi
#Sprawdź wartości uwierzytelnienia
jeśli [[$ hostName == "localHost" && $ UserName == "fahmida" && $ hasło == "1234"]]; Następnie
Echo „Uwierzytelnianie się udane."
w przeciwnym razie
Echo „Uwierzytelnianie nieudane."
fi

Wyjście:

Zgodnie z wyjściem powyższy skrypt został wykonany dwa razy z sześcioma wartościami argumentów. W pierwszym wykonaniu przekazano prawidłowe dane i wydrukowano komunikat sukcesu. Po drugim wykonaniu przekazano nieprawidłowe dane i wydrukowano komunikat o awarii.

Wniosek:

Polecenie „Shift” jest bardzo pomocnym poleceniem do odczytania konkretnych wartości argumentów wiersza poleceń. Różne zastosowania tego polecenia zostały opisane w tym samouczku za pomocą wielu przykładów, aby pomóc czytelnikom zrozumieć cel używania tego polecenia w skrypcie Bash.