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.
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. |
Karakter sorozatokat tárolhatunk segítségével. Minden dupla idézőjel közé tett szöveg string típusnak tekintendő.
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.
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
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.
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.
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.
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.
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.
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.
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.