Elágazások

If

Programok írása során sokszor kerülünk olyan helyzetbe, hogy két lehetõség közül kell választanunk. Ekkor használhatjuk fel az if utasítást.
if kifejezés
then
utasitás1
utasitás2
...
else
utasitás1
utasitás2
...
fi
Az if utasítás a kifejezés eredményétõl függõen hajtja végre a megfelelõ parancssorozatot. Ez a gyakorlatban azt jelenti, hogy ha a kifejezésben megadott parancs visszatérési értéke 0, akkor a then ág hajtódik végre, ellenkezõ esetben az else ág (ha létezik). Leggyakrabban a test parancsot használjuk a kifejezésben. Ennek a parancsnak a másik megjelenési formája a [, ami sokszor egy szimbólikus link a test programra. Ez a parancs sokféle mûvelet elvégzésére alkalmas, melyeket a következõ táblázatban foglalunk össze.
Táblázat 10-3. A test parancs lehetõségei
 
Kifejezés  Leirás 
karakterlánc  Igaz, ha a karakterlánc nem üres. 
karakterlánc1 = karakterlánc2  Igaz, ha a két karakterlánc megegyezik. 
karakterlánc1 != karakterlánc2  Igaz, ha a karakterláncok különböznek. 
-n karakterlánc  Igaz, ha a karakterlánc nem üres. 
-z karakterlánc  Igaz, ha a karakterlánc üres. 
kifejezés1 -eq kifejezés2  Igaz, ha a két kifejezés aritmetikailag egyenlõ. (pl. 4 egyenlõ 4 -gyel ) 
kifejezés1 -ne kifejezés2  Igaz, ha a két kifejezés aritmetikailag különbözik. (pl. 4 nem egyenlõ 3-mal. ) 
kifejezés1 -gt kifejezés2  Igaz, ha az elsõ kifejezés nagyobb mint a második. 
kifejezés1 -ge kifejezés2  Igaz, ha az elsõ kifejezés nagyobb a másodiknál, vagy egyenlõek. 
kifejezés1 -lt kifejezés2  Igaz, ha az elsõ kifejezés kisebb mint a második. 
kifejezés1 -le kifejezés2  Igaz, ha az elsõ kifejezés kisebb a másodiknál, vagy egyenlõek. 
! kifejezés  Negálja a kifejezést, vagyis igaz a visszatérési értéke, ha a kifejezés hamis. 
-d fájl  Igaz, ha a fájl egy könyvtár 
-e fájl  Igaz, ha a fájl létezik. 
-f fájl  Igaz, ha a fájl normál állomány. 
-g fájl  Igaz, ha a set-group-id (setgid) bit be van állítva a fájlon. 
-r fájl  Igaz, ha a fájl olvasható. 
-s fájl  Igaz, ha a fájl hossza nem nulla. 
-u fájl  Igaz, ha a set-user-id bit be van állítva a fájlon. 
-w fájl  Igaz, ha a fájl írható. 
-x fájl  Igaz, ha a fájl futtatható. 
Mostanra az összes eddig látott példaprogram utasításait ismerjük. Nézzünk meg egy programot, ami összefoglalja eddigi tudásunkat.
#!/bin/sh

echo "Reggel van?"
read valasz
if [ "$valasz" = "igen" ]
then
echo "Jo reggelt"
elif [ "$valasz" = "nem" ]
echo "Jo napot"
else
echo "$valasz nem ertelmezheto. Valasz: igen vagy nem!"
exit 1
fi
exit 0
#!/bin/sh

echo "Reggel van?"
read valasz
A programot a szokásos módon kezdjük, majd megkérdezzük, hogy reggel van-e. Figyeljük meg, hogy a read utasításban nem $valasz-t hasznaltunk, hiszen nem egy változó tartalmára hivatkozunk, hanem egy változót deklarálunk, amelynek értékét a billentyûzetrõl olvassuk be.
if [ "$valasz" = "igen" ]
then
Megnézzük, hogy a válasz igen-e. 
Megjegyzés: Fontos, hogy a változóhivatkozásokat idézõjelek közé zárjuk, mivel ha valamilyen ok miatt nem jön létre a változó, akkor az értelmezõ úgy veszi, hogy semmit nem írtunk oda. Így idézõjelek nélkül hiányolni fogja a kifejezés elsõ operandusát.
echo "Jo reggelt"
elif [ "$valasz" = "nem" ]
echo "Jo napot"
Az elif utasítás lehetõvé teszi, hogy a programozó egy if szerkezeten belül több feltételt vizsgáljon meg. 
else
echo "$valasz nem ertelmezheto. Valasz: igen vagy nem!"
exit 1
Ha nem megfelelõ választ adunk meg, akkor a program hibaüzenet kiséretében az egyes hibakóddal kilép. 
fi
exit 0
Ha minden rendben volt, akkor a nullás kóddal fejezzük be a programot. 

Case