1. Teoria

1.1. Tworzenie zmiennej

ZMIENNA="jakas wartosc"

1.2. Wartość zmiennej

W celu uzyskania wartości zmiennej poprzedzamy jej nazwę znakiem dolara, np.:

echo $ZMIENNA

1.3. Zmienne specjalne

Zmienna Opis

$?

Zwraca kod zakończenia programu.

$#

Liczba argumentów, z którymi uruchomiono program.

$N

gdzie N to kolejna liczba naturalna - zawiera kolejne argumenty wywołania

1.4. Zmienne środowiskowe

Zmienna Opis

$USER

Nazwa aktualnego użytkownika

$HOME

Ścieżka do katalogu domowego

$PATH

Zwraca listę ścieżek na których wyszukiwane są programy do uruchomienia, ścieżki oddzielone są za pomocą znaku dwukropka

$RANDOM

Zwraca losową liczbę z przedziału 0 i 32767.

$PWD

Ścieżka aktualnego katalogu

$SHELL

Ścieżka do powłoki

1.5. Zasięg zmiennych

Poleceniem export zmieniamy zasięg zmiennej na globalny.

1.6. Zmiana wartości zmiennej dla konkretnego programu

W celu podania zmiennej dla danego uruchomienia poprzedzamy polecenie definicją zmiennej.

ZMIENNA="wartosc" ./program.sh

1.7. Renderowanie zmiennej

Podobnie jak przy podawaniu formatu daty do polecenia date, możemy korzystać ze zmiennych w poleceniach.

echo "Ala ma $ZMIENNA"

ls $ZMIENNA.txt

1.8. Przypisanie stdout do zmiennej

ZMIENNA=`ls -al`

ZMIENNA=$(ls -al)

1.9. Wczytanie wartości zmiennej interaktywnie

read ZMIENNA

1.10. Wykonywanie operacji matematycznych

echo $((1+2))

echo $[1+2]

echo $[A+B]

1.11. Obcinanie części tekstu

${ZMIENNA OPERATOR WZORZEC} - bez odstępów wokół operatora

Operatory:

  • % - obcina najkrótsze dopasowanie do wzorca od tyłu

  • %% - obcina najdłuższe dopasowanie do wzorca od tyłu

  • # - obcina najkrótsze dopasowanie do wzorca od przodu

  • ## - obcina najdłuższe dopasowanie do wzorca od przodu

2. Praktyka

2.1. Zadanie

Important set, export

Wyświetl zawartość zmiennych systemowych.

2.2. Zadanie

Wyświetl numer użytkownika UID na komputerze w laboratorium i na wierzbie. Czy są takie same?

2.3. Zadanie

Ustaw zmienną środowiskową o nazwie OPCJA na wartość –alh

2.4. Zadanie

Użyj zmiennej środowiskowej OPCJA razem z poleceniem ls aby wyświetlić pliki w katalogu $HOME z opcjami znajdującymi się w zmiennej $OPCJA.

2.5. Zadanie

Important exit

Sprawdź czy zmienna OPCJA dostępna jest w kolejnej instancji shella którą uruchomisz z bieżącej instancji (uruchom polecenie bash, aby wyjść z kolejnej instancji shella wpisz exit).

2.6. Zadanie

Sprawdź jaki kod wyjścia (exit status) zwraca polecenie ls gdy poprawnie wylistuje pliki oraz wtedy gdy podany jako parametr plik lub katalog nie istnieje.

2.7. Zadanie

Spróbuj uruchomić kolejną instancję powłoki i poleceniem exit zwrócić kod wyjścia 13. Sprawdź w powłoce wyżej czy otrzymano kod właśnie taki kod wyjścia.

2.8. Zadanie

Ustaw wartość zmiennej JABLKA na 2. Skonstruuj polecenie uzupełniając wielokropki aby uzyskać wymagany tekst na wyjściu:

echo "Ja mam … jabłek. Ty masz … jabłek. On ma … jabłek."

ma wyświetlić

Ja mam 2 jabłek. Ty masz 4 jabłek. On ma 8 jabłek.

Musisz użyć zmiennej JABLKA oraz operacji matematycznych.

2.9. Zadanie

Dodaj do zmiennej środowiskowej PATH ścieżkę $HOME/bin.

2.10. Zadanie

Za pomocą operatorów obcinania napisów wyświetl tak obciętą ścieżkę PATH aby zawierała jedynie ścieżkę, którą należało dodać w poprzednim zadaniu.

2.11. Zadanie

Ustaw zmienną TEKST na wartość "raz-dwa;trzy-cztery;piec-szesc;siedem-osiem". Obetnij zmienną TEKST tak aby uzyskać następujące napisy:

  1. raz-dwa

  2. siedem-osiem

  3. raz

  4. osiem

  5. szesc;siedem

  6. dwa;trzy

  7. szesc

  8. piec

  9. cztery;piec

Uwaga: możesz używać zmiennych pośrednich jeśli potrzebujesz. Spróbuj nie używać liter we wzorcach.

2.12. Zadanie

Spróbuj wykonać powyższe ćwiczenie używając polecenia cut zamiast operatorów obcinania tekstu.