Zmienne

Pedros

Zmienne

Jak w każdym języku programownia tak i w bashu występują zmienne. Dzieli się je na kilka rodzajów. Takie podstawowe wyglądają tak:
zmienna1="jakis tekst"
zmienna2=4

Jak łatwo zauważyć nie ma typów danych, jest po prostu zmienna do której wrzucamy cokolwiek i tam to siedzi. Teraz zapewne chcielibyśmy wydrukować na ekranie zawartość zmiennej. Wykorzystamy do tego znane nam polecenie 'echo'. Nasz skrypt wyglądałby tak:

#!/bin/sh
zmienna1="jakis tekst"
zmienna2=4
echo $zmienna1
echo $zmienna2

Ważną rzeczy podczas przypisywania danych jest fakt, że nie może być znaków spacji przy '=' tak jak jest to pokazane w przykładzie. Doskonale widać, że do wywoływania zmienych tak samo jak jest to w PHP służy znak $. A co gdybyśmy chcieli wywołać zmienna w łańcuchu? Nasz skrypt wygladałby tak:

#!/bin/sh
zmienna1="jakis tekst"
zmienna2=4
echo "Zawartosc zmiennej1: $zmienna1"
echo "Zawartosc zmiennej2: $zmienna2"

Wszystko świetnie ale czasami do zmiennej przydałoby się przypisać to co zwróci dany program. Aby to zrobić należy wykorzystać odwrócone apostrofy. Tak jak w przykładzie:

#!/bin/sh
zmienna=`ls /bin`
echo $zmienna

Jak widać wykonywanie poleceń i przypisywanie tego co zwrócą zmiennym także nie jest trudne. Powyższy skrypt wypisze wszystkie pliki znajdujące się w katalogu <font name="Courier New">/bin</span>. Polecenie <font name="Courier New">ls</span> jest zwykłym poleceniem systemowym, które za parametr przyjmuje katalog który ma wylistować.

Dużą część zmiennych sami będziemy definiować, ale są w systemie zdefiniowane zmienne jak, np. <font name="Courier New">$HOME, $USER</span> itp. Są to tak zwane zmienne środowiskowe. To tylko dwa przykłady a tych zmiennych jest o wiele więcej, aby się samemu przekonać należy w konsoli wywołać polecenie: <font name="Courier New">printenv</span>. Tych zmiennych można używac tak samo jak każdnych innych zmiennych, np.

#!/bin/sh
echo $HOME

Jak łatwo się domyślić wyświetli się ścieżka do katalogu domowego użytkownika który wywołał skrypt. Można samemu tworzyć takie zmienne poprzez polecenie <font name="Courier New">export</span>, np.

$ export linux="debian"

I teraz w jakimkolwiek skrypcie wydrukujemy zmienną linux to na ekranie pojawi się słowo 'debian'. Gdy chcemy usunąć zmienna środowiskową należy użyc przełącznika -n przy poleceniu export, np.

$ export -n linux

I zmienna linux przestanie istnieć.

Został jeszcze jeden typ zmiennych. Są to zmienne specjalne a normalniej nazywane po prostu parametrami skryptu. Czasami może być potrzeba uruchomienia jakiegoś programu z jakimś parametrem tak jak spora część programow. Zmiennych tych jest dziesięć. $0 - $9. Parametr $0 to nazwa skryptu który został wywołany. Zmienne $1-$9 to rzeczywiste parametry. Zasadę działania niech przedstawi skrypt:

#!/bin/sh
echo "$1 $2"

Wyświetli pierwszy i drugi parametr (jeśli je podano oczywiście). Jeśli chcemy wyświetlić wszystkie parametry z którymi wywołano skrypt należy użyć zmiennej $@. Z tego typu zmiennych zostały jeszcze:
$$ - zawiera PID procesu bieżącej powłoki
$? - kod powrotu ostatnio wykonywanego zadania

2 komentarzy

Nie chce być niegrzeczny ale na początku artykułu zaznaczono ze tekst dotyczy Bash w innych powłokach inaczej się programuje są inne komendy chociażby do eksportu zmiennych środowiskowych każda powłoka posiada swój man. Artykuł bardzo przydatny, dziękuję.

ja mam jedna uwage.. przy podawaniu sciezki na poczatku skryptu...
Utarlo sie, ze bardziej elegancka, a zarazem bardziej uniwersalna jest /bin/sh. Wyeleminuje to wiele problemow typu "Nie mam bash w systemie tylko inna powloke"