Linux:Elágazások
(Változatok közti eltérés) (Változatok közti eltérés)
|
|
208. sor: |
208. sor: |
| </megoldas> | | </megoldas> |
| === Hibakezelés === | | === Hibakezelés === |
- | <kivonat>exit</kivonat> | + | <kivonat>$ERR</kivonat> |
| * Készíts programot, mely létrehozza a ''/tmp/testDir'' nevű könyvtárat! Az esetleges hibaüzenetek ne jelenjenek meg, de ha a könyvtár létrehozása sikertelen, akkor írjunk ki saját hibaüzenetet! <megoldas> | | * Készíts programot, mely létrehozza a ''/tmp/testDir'' nevű könyvtárat! Az esetleges hibaüzenetek ne jelenjenek meg, de ha a könyvtár létrehozása sikertelen, akkor írjunk ki saját hibaüzenetet! <megoldas> |
| <code lang="bash"> | | <code lang="bash"> |
A lap 2010. április 22., 21:15-kori változata
Elágazások
Kivonat: for, while
- Készíts programot, mely egy futásidőben bekért számról eldönti, hogy nagyobb-e, mint 5!
#!/bin/bash
echo -n "Add meg a vizsgálandó számot!"
read SZAM
if [ "$SZAM" -gt 5 ] ; then
echo "A $SZAM nagyobb, mint 5"
else
echo "A $SZAM kisebb, mint 5"
fi
- Készítsünk olyan programot, amely bekér két számot, és kiírja a nagyobbikat a képernyőre. Ha a két szám egyenlő, azt is kijelzi.
#!/bin/bash
# Készítette: Magyar Péter
echo -n "Add meg az első számot!"
read SZAM1
echo -n "Add meg a második számot!"
read SZAM2
if [ "$SZAM1" -gt "$SZAM2" ] ; then
echo "A(z) $SZAM1 nagyobb, mint a(z) $SZAM2."
else
if [ "$SZAM2" -gt "$SZAM1" ] ; then
echo "A(z) $SZAM2 nagyobb, mint a(z) $SZAM1."
else
echo "A két szám egyenlő."
fi
fi
- Egészítsük ki az előző feladatot azzal, hogy a futás során történt eseményekről részletes naplóbejegyzést készítünk a "~/naplo.log" file-ba oly módon, hogy minden futás önálló tartalmat generáljon, felülírva a korábbi naplózási eredményeket.
#!/bin/bash
# Készítette: Magyar Péter
echo "Naplózás indul!" > ~/naplo.log
echo -n "Kérem az első számot!"
read A
echo "Az első szám = $A" >> ~/naplo.log
echo -n "Kérem a második számot!"
read B
echo "A második szám = $B" >> ~/naplo.log
if [ "$A" -gt "$B" ] ; then
echo "A(z) $A nagyobb, mint a(z) $B."
echo "A(z) $A nagyobb, mint a(z) $B." >> ~/naplo.log
else
if [ "$B" -gt "$A" ] ; then
echo "A(z) $B nagyobb, mint a(z) $A."
echo "A(z) $B nagyobb, mint a(z) $A." >> ~/naplo.log
else
echo "A két szám egyenlő."
echo "A két szám egyenlő." >> ~/naplo.log
fi
fi
echo "Naplózás vége." >> ~/naplo.log
- Módosítsuk a naplózási stratégiát, hogy ugyanabba a file-ba növekményesen naplózódjanak az eredmények. Ekkor a futás elején írjuk bele a napófileba az aktuális dátumot és időt, majd a futási log bejegyzéseket.
#!/bin/bash
# Készítette: Magyar Péter
date >> ~/naplo.log
echo "Naplózás indul!" >> ~/naplo.log
echo -n "Kérem az első számot!"
read A
echo "Az első szám = $A" >> ~/naplo.log
echo -n "Kérem a második számot!"
read B
echo "A második szám = $B" >> ~/naplo.log
if [ "$A" -gt "$B" ] ; then
echo "A(z) $A nagyobb, mint a(z) $B."
echo "A(z) $A nagyobb, mint a(z) $B." >> ~/naplo.log
else
if [ "$B" -gt "$A" ] ; then
echo "A(z) $B nagyobb, mint a(z) $A."
echo "A(z) $B nagyobb, mint a(z) $A." >> ~/naplo.log
else
echo "A két szám egyenlő."
echo "A két szám egyenlő." >> ~/naplo.log
fi
fi
echo "Naplózás vége." >> ~/naplo.log
echo "-----------------------------------------" >> ~/naplo.log
- Oldjuk meg, hogy a script induláskor ellenőrízze le, hogy a naplófile hossza meghaladja-e a 1 megabyte-ot. Amennyiben igen, úgy a naplófile-ról készítsen másolatot naplo.old néven, majd hozzon létre egy üres naplófilet, és folytassa a futást.
#!/bin/bash
# Készítette: Magyar Péter & Kis Balázs
MERET=`ls -l ~/naplo.log | cut -d" " -f5`
if [ "$MERET" -gt 1024 ] ; then
mv ~/naplo.log ~/naplo.old
fi
date >> ~/naplo.log
echo "Naplózás indul!" >> ~/naplo.log
echo -n "Kérem az első számot!"
read A
echo "Az első szám = $A" >> ~/naplo.log
echo -n "Kérem a második számot!"
read B
echo "A második szám = $B" >> ~/naplo.log
if [ "$A" -gt "$B" ] ; then
echo "A(z) $A nagyobb, mint a(z) $B."
echo "A(z) $A nagyobb, mint a(z) $B." >> ~/naplo.log
else
if [ "$B" -gt "$A" ] ; then
echo "A(z) $B nagyobb, mint a(z) $A."
echo "A(z) $B nagyobb, mint a(z) $A." >> ~/naplo.log
else
echo "A két szám egyenlő."
echo "A két szám egyenlő." >> ~/naplo.log
fi
fi
echo "Naplózás vége." >> ~/naplo.log
echo "-----------------------------------------" >> ~/naplo.log
- Készíts programot, mely megjeleníti a ~/testfile fájl tartalmát. Ha a fájl nem létezik, akkor létrehozza azt, és beleírja a programot futtató felhasználó nevét (ezt a shell a $USER változóban teszi elérhetővé).
#!/bin/bash
TESTFILE="/tmp/testfile.txt"
if [ -f $TESTFILE ]; then
echo "A $TESTFILE már létezik, a tartalma a következő:"
cat $TESTFILE
else
echo "$TESTFILE létrehozása."
echo $USER >$TESTFILE
fi
- Készíts programot, mely bekéri egy hét napjának sorszámát, és kiírja az ahhoz tartozó nap nevét!
#!/bin/bash
echo -n "Nap sorszáma: "
read N
case $N in
1) echo "Hétfo" ;;
2) echo "Kedd" ;;
3) echo "Szerda" ;;
4) echo "Csütörtök" ;;
5) echo "Péntek" ;;
6) echo "Szombat" ;;
7) echo "Vasárnap" ;;
*) echo "Nincs ilyen nap." ;;
esac
- Készíts programot, mely bekéri egy téglalap oldalainak nagyságát, és kiírja annak területét. A programnak ellenőriznie kell, hogy a megadott oldal hosszak nagyobbak-e 0-nál.
#!/bin/bash
echo -n "A oldal: "
read A
echo -n "B oldal: "
read B
# Ha A és B is pozitív egész
if [ "$A" -gt 0 -a "$B" -gt 0 ]
then
echo "Terület: " ` expr $A \* $B ` "."
else
echo "Érvénytelen adatok"
fi
- Készíts programot, mely ellenőrzi, hogy azt a root felhasználó futtatja-e, ha nem, akkor adjon hibaüzenetet!
#!/bin/bash
if [ $USER != "root" ] ; then
echo "Ön nem rendszergazda."
exit
fi
echo "Ön rendszergazda."
- Készíts programot, mely az aktuális idő alapján kiírja, hogy mi a napszaknak megfelelően köszönés!
#!/bin/bash
ORA=`date '+%H'`
N="ejszakat"
if [ $ORA -ge 5 -a $ORA -le 8 ] ; then
N="reggelt"
fi
if [ $ORA -ge 9 -a $ORA -le 18 ] ; then
N="napot"
fi
if [ $ORA -ge 18 -a $ORA -le 22 ] ; then
N="estet"
fi
echo "[$ORA óra van]: Jó $N kívánok."
- Készíts programot, mely bekéri egy felhasználó login nevét, és a /etc/passwd file-ból kikeresi annak teljes nevét! A program ellenőrizze, hogy a felhasználó valóban adott-e keresendő nevet, és adjon értelmes választ akkor is, ha a keresett felhasználó nincs a rendszerben!
#!/bin/bash
echo -n "Login név: "
read NAME
if [ -z "$NAME" ] ; then
echo "Meg kell adnia a nevet."
exit
fi
FULLNAME=`cat /etc/passwd | grep ^$NAME: | cut -d: -f5`
if [ ! -z "$FULLNAME" ] ; then
echo "Teljes név: $FULLNAME"
else
echo "Nincs $NAME felhasználó a rendszerben."
fi
Hibakezelés
Kivonat: $ERR
- Készíts programot, mely létrehozza a /tmp/testDir nevű könyvtárat! Az esetleges hibaüzenetek ne jelenjenek meg, de ha a könyvtár létrehozása sikertelen, akkor írjunk ki saját hibaüzenetet!
#!/bin/bash
# A hibákat átirányítjuk a /dev/null-ba
mkdir /etc/alma 2>/dev/null
# Az ERR változóba kerül a parancs által adott visszatérési érték
ERR=$?
if [ $ERR -ne 0 ] ; then
echo "Hiba a könyvtár létrehozásakor: $ERR"
fi
|