Zmienne definiuje się używając składni zmienna=wartosc
lub w przypadku zmiennych liczbowych let zmienna=liczba
, np.
$ napis="Ala ma kota"
$ let wynik=10
Nazwa zmiennej może składać się z dowolnych liter, cyfr (cyfra nie może być pierwszym znakiem nazwy zmiennej) oraz znaku podkreślenia.
Wartość umieszczoną w zmiennej wydobywamy umieszczając $ przed nazwą zmiennej ewentualnie otaczając nazwę zmiennej klamrami, np.:
$ echo ${napis}
Ala ma kota
$ echo $HOME
/home/student
$ echo ${wynik}
$ 10
W powłoce Bash mamy do dyspozycji tablice jednowymiarowe. Nie muszą one być deklarowane. Do poszczególnych elementów tablicy
odwołujemy sie poprzez nawiasy kwadratowe ${zmienna[indeks]}
, gdzie index jest liczbą całowitą dodatnią.
$ kolor[0]=bialy
$ kolor[1]=czarny
$ kolor[5]=zielony
$ echo Kolor pierwszy to ${kolor[1]}
Kolor pierwszy to czarny
$ echo Wszystkie kolory: ${kolor[*]}
Wszystkie kolory: bialy czarny zielony
Tablice indeksowane są liczbami całkowitymi począwszy od zera.
Zmienną tablicową można zainicjować ciągiem wartości podanych w nawiasach zmienna=(wartosc1 wartosc2 ... wartoscN)
, np.
$ dzien=(poniedzialek wtorek sroda czwartek piatek sobota niedziela)
$ echo ${dzien[6]}
sobota
$ echo "Dni tygodnia: ${dzien[*]}"
Dni tygodnia: poniedzialek wtorek sroda czwartek piatek sobota niedziela
Liczbę elementów tablicy uzyskujemy wyrażeniem ${#zmienna[*]}
$ echo "Ilosc dni tygodnia = ${#dzien[*]}"
Ilosc dni tygodnia = 7
Wyrażenie ${#zmienna[indeks]}
zwraca ilość znaków zawartych w elemencie tablicy o podanym indeksie.
$ echo Slowo ${dzien[1]} zawiera ${#dzien[1]} znakow
Slowo wtorek zawiera 6 znakow
Polecenie unset zmienna
usuwa podaną zmienną. Chcąc usunąc wybrany element tablicy należy wykonać unset tablica[index]
.
$ unset kolor
$ unset dzien[4]
Zmienna $*
zawiera listę wszystkich argumentów z jakimi został wywołany skrypt, zmienna $#
podaje liczbę tych argumentów, zmienna $0
zawiera nazwę skryptu, zaś zmienne $1
, $2
, $3
, itd. zawierają kolejne argumenty.
Przykład skryptu i nazwie argumenty.sh, który wyświetli swoją nazwę, liczbę argumentów oraz pierwsze dwa argumenty:
#!/bin/bash echo Nazwa skryptu=$0 echo Podales $# argumentow echo Oto one: $* echo Argument 1 = $1 echo Argument 2 = $2 exit 0
Przykładowe działanie:
$ ./argumenty.sh
Nazwa skryptu=./argumenty.sh Podales 0 argumentow Oto one:
$ ./argumenty.sh Ala ma kota
Nazwa skryptu=./argumenty.sh Podales 3 argumentow Oto one: Ala ma kota Argument 1 = Ala Argument 2 = ma