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