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.