BASH

Zmienne

  • 2006-12-24 14:03
  • 2 komentarze
  • 4281 odsłon
  • Oceń ten tekst jako pierwszy

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 /bin. Polecenie ls 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. $HOME, $USER 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: printenv. 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 export, 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 komentarze

kapralez 2013-03-16 08:07

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

lofix 2006-04-03 13:19

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"