A Bash programozási nyelv

Típus

Típusszerkezet

Eltérően más programozási nyelvektől, Bash nem tesz különbséget a változókban típus szerint. Tulajdonképpen a változók tartalma egy karakterlánc, de a kontextustól függően engedélyezi aritmetikai műveletek és összehasonlítások elvégzését. Ennek eldöntésében csak az játszik szerepet, hogy a változó tartalma csupa számból áll e vagy sem.

A declare utasítással a változó létrehozásakor megadhatjuk a declare utasítás egy opciójával, hogy explicit milyen típusú változót szeretnénk létrehozni.

declare OPTION(s) VARIABLE=value
OPTION Jelentés
-a A változó egy tömb.
-f Csak függvénynevek használata.
-i A változó számként viselkedik; kiszámítására akkor kerül sor ha értéket kap.
-p Minden változót listáz az értékével együtt ha lefutott. Ha ezt az opciót választjuk a többit nem veszi figyelembe a rendszer.
-r Make variables read-only. These variables cannot then be assigned .values by subsequent assignment statements, nor can they be unset.
-t Minden változónak trace atributumot ad.
-x Minden változót megjelöl exportra az ezt követő parancsoknak az aktuális környezeben.

Skalárok

String

Karakter sorozatokat tárolhatunk segítségével. Minden dupla idézőjel közé tett szöveg string típusnak tekintendő.

VARIABLE=string

Integer

Ha leírunk egy számsorozatot a nyelv Integer típusnak tekinti azt alap esetben. Így használható rajtuk a legtöbb más nyelvből megszokott aritmetikai művelet.

VARIABLE=12

Boolean

Logikai értéknek számítanak a true és false szavak idézőjel nélkül. Logikai összehasonlítás valamint logikai műveletek végrehajtása engedélyezett rajtuk. Bármilyen string true értékre konvertálódik

flag=true #true flag=false #true flag=0 #true flag=1 #true

Összetett típusok

Tömb

A nyelv újabb verziói egydimenziós tömbök kezelését teszi lehetővé. A tömb elemeinek kezdeti értéke beállítható a variable[xx] szintaxis segítségével. Alternatív megoldásként, itt is definiálható a tömb a declare -a tömb_neve utasítás segítségével.

Unix[0]='Debian' Unix[1]='Red hat' Unix[2]='Ubuntu' Unix[3]='Suse' echo ${Unix[1]}

Egy tömb elem értékének elérésére kapcsoszárójel szolgál, erre a ${element[xx]} szintaxist használhatjuk. Tömb elemnek az array_name[x] szintaxissal adhatunk értéket.

declare -a Unix=('Debian' 'Red hat' 'Red hat' 'Suse' 'Fedora');

A tömbök mérete dinamikus, tehát nincs szükség előzetesen a tömb méretét meghatározni. Kiírathatjuk egybe is az egész tömböt.

echo ${Unix[@]}

Ha a tömb egy elemét nem direkt határoztuk meg akkor a tömb indexelése 0-tól kezdődik és egyesével növekszik.

Konstansok

Konstansokat bárhol definiálhatunk, de konvenció szerint érdemes ezt a script elején megtenni. A declare –r constant_name=value szintaxis segítségével hozhatunk létre konstanst. Ez a script futása során megváltoztathatatlan lesz. Alternatív módon használhatjuk a readonly kulcsszót is egy változó bevezetése során.

readonly TUX=penguinpower

Speciális típusok

Null

Megengedett, hogy egy változó érték nélkül legyen bevezetve. Ilyenkor a típusa null lesz. Ezt a nyelv ugyanúgy kezeli, mint a többi típust.

Típuskonverzió

Fentebb említettük, hogy a nyelv gyakorlatilag típusmentes. Ez azonban nem teljesen igaz. Ugyan a változó környezetéből derül ki, hogy milyen kontextusban használhatjuk, de a nem megfelelő használat csak részben eredményez hibát. Tényleges típuskonverzió nem történik, viszont NULL típust kontextustól függően tudja a nyelv értelmezni 0 számként, illetve üres string-ként. Más esetben azonban hibát kaphatunk. Gyakorlatilag a programozó felelőssége, hogy a változók tartalmát helyesen kezelje.