Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 3
  • 196
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedź (1)

  • 3

Operator przekierowania "<<" nazywany również "here-document" służy do pobrania ze standardowego wejścia wielu linii z argumentami. Dzięki operatorowi "here-document" możemy np. wkleić na wejściu do skryptu cały długi dokument przy pomocy funkcji kopiuj-wklej. Po operatorze podajemy wzorzec zakończenia wprowadzania danych, np.:

[root@RHEL TEST]# ./skrypt.sh << .

W przypadku powyższego wywołania, uruchomiony zostanie skrypt o nazwie skrypt.sh, po czym użytkownik będzie mógł wprowadzić dowolną ilość linii z argumentami, dopóki nie zakończy wprowadzania wzorcem zakończenia, czyli w tym wypadku znakiem kropki "." w nowej linii. Operator "<<" przekaże wszystkie wprowadzone linie do skryptu, tak jakby użytkownik wprowadzał je kolejno wpisując na klawiaturze, po każdej linii (a właściwie akapicie) wciskając klawisz enter. Dane te mogą zostać również wklejone przy pomocy funkcji kopiuj-wklej.

Poniższy prosty skrypt pobiera od użytkownika kilka parametrów, które następnie przetwarza. Tutaj w sposób prosty, wyświetlając je przy pomocy polecenia echo:

[root@RHEL TEST]# cat test.sh

#!/bin/sh

read -p "username: " U
read -p "pierwsza liczba: " PL
read -p "druga liczba: " DL
read -p "trzecia liczba: " TL
read -p "czwarta liczba: " CL
read -p "piata liczba: " PTL
read -p "szosta liczba: " SL

echo -e "\nWitaj ${U}. Twoje liczby to: ${PL}, ${DL}, ${TL}, ${TL}, ${CL}, ${PTL}, ${SL} \n"


Załóżmy jednak, że zamiast polecenia echo chcemy umieścić jakiś bardziej skomplikowany kod. Argumenty mają być przetwarzane przez ten kod, a w momencie pisania skryptu musimy wielokrotnie testować jego działanie. Za każdym razem podawać musimy w sesji interaktywnej wszystkie 7 argumentów - i tutaj właśnie z pomocą przyjść nam może operator "<<". Wywołując skrypt w ten sposób:

[root@RHEL TEST]# ./test.sh << .

wprowadzamy kolejno argumenty kończąc kropką w ostatniej linii, np.:

> spiech
> 11
> 1
> 12
> 1
> 9
> 0
> .

Argumenty przekazane zostaną kolejno do skryptu, z pominięciem sesji interaktywnej. Teraz po każdej zmianie w kodzie skryptu, możemy przywoływać całe polecenie z argumentami, z historii poleceń (np. używając klawisza strzałki do góry). Dzięki temu możemy wielokrotnie testować skrypt bez konieczności przechodzenia za każdym razem przez sesję interaktywną. Możemy również wklejać argumenty na raz przy pomocy funkcji kopiuj-wklej.

  • Odpowiedział
  • @ | 10.07.2013
  • TRENER ALTKOM AKADEMII