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 [email protected] Z tego typu zmiennych zostały jeszcze:
$$ - zawiera PID procesu bieżącej powłoki
$? - kod powrotu ostatnio wykonywanego zadania

2 komentarzy

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"

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ę.